문제풀이
[백준] 1244 스위치 켜고 끄기 - JAVA
자르비옹스
2022. 2. 28. 01:11
1. 문제 유형 : 구현
2. 시간복잡도 : O(N^2)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(in.readLine());
int[] status = new int[N+1];
StringTokenizer st = new StringTokenizer(in.readLine());
for (int i = 1; i <= N; i++) {
status[i] = Integer.parseInt(st.nextToken());
}
int sN = Integer.parseInt(in.readLine());
for (int i = 0; i < sN; i++) {
st = new StringTokenizer(in.readLine());
int gender = Integer.parseInt(st.nextToken());
int index = Integer.parseInt(st.nextToken());
if(gender == 1) {
//남학생
int nextIdx = index;
while(nextIdx <= N) {
status[nextIdx] = (status[nextIdx] == 0 ? 1 : 0);
nextIdx += index;
}
}else {
// 여학생
int next = index;
int prev = index;
while(next <= N && prev > 0) {
if(status[prev] == status[next]) {
if(status[prev] == 0) {
status[prev--] = status[next++] = 1;
}else {
status[prev--] = status[next++] = 0;
}
}else {
break;
}
}
}
}
for (int i = 1; i <= N; i++) {
sb.append(status[i]).append(" ");
if(i%20 == 0) sb.append("\n");
}
System.out.println(sb);
}
}