본문 바로가기

OJ

[BOJ] 28088 응애(EASY) (JAVA)

https://www.acmicpc.net/problem/28088

 

28088번: 응애(EASY)

첫째 줄에 $N,M,K$가 공백으로 구분되어 주어진다. $(3 \le N \le 200; 1 \le M \le N; 0 \le K \le 10^6)$ 둘째 줄부터 $M$개의 줄에 걸쳐 처음에 인사할 사람의 번호가 한 줄에 하나씩 주어진다. 같은 입력이 2번

www.acmicpc.net

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	
    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());
        boolean[][] arr = new boolean[2][N];
        for (int i = 0; i < M; i++) {
            arr[0][Integer.parseInt(br.readLine())] = true;
        }

        int n = N - 1;
        int nn = N - 2;
        int time = 0;
        while (time < K) {
            int t = time % 2;
            int td = (t + 1) % 2;
            for (int i = 1; i < N - 1; i++) {
                if ((arr[t][i - 1] && arr[t][i + 1]) || (!arr[t][i - 1] && !arr[t][i + 1])) arr[td][i] = false;
                else arr[td][i] = true;
            }
            if ((arr[t][n] && arr[t][1]) || (!arr[t][n] && !arr[t][1])) arr[td][0] = false;
            else arr[td][0] = true;
            if ((arr[t][0] && arr[t][nn]) || (!arr[t][0] && !arr[t][nn])) arr[td][n] = false;
            else arr[td][n] = true;

            time++;
        }

        int cnt = 0;
        for (int i = 0; i < N; i++) {
            if (arr[time % 2][i]) cnt++;
        }
        System.out.print(cnt);

    }

}

'OJ' 카테고리의 다른 글