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' 카테고리의 다른 글
[BOJ] 9613 GCD 합 (JAVA) (0) | 2023.07.31 |
---|---|
[BOJ] 25706 자전거 묘기 (JAVA) (0) | 2023.07.30 |
[BOJ] 28135 Since 1973 (JAVA) (0) | 2023.07.28 |
[BOJ] 28130 슈넬치킨 랑데부 (JAVA) (0) | 2023.07.27 |
[BOJ] 11557 Yangjojang of The Year (JAVA) (0) | 2023.07.26 |