https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
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));
int numSwitch = Integer.parseInt(br.readLine());
int[] stateSwitch = new int[numSwitch];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i < numSwitch; i++) {
stateSwitch[i] = Integer.parseInt(st.nextToken());
}
int T = Integer.parseInt(br.readLine());
while(T-- > 0) {
st = new StringTokenizer(br.readLine());
int gender = Integer.parseInt(st.nextToken());
int getNum = Integer.parseInt(st.nextToken());
if(gender == 1) {
for(int i = 0; i < numSwitch; i++) {
if((i + 1) % getNum == 0) {
stateSwitch[i] = stateSwitch[i] == 0 ? 1 : 0;
}
}
} else {
stateSwitch[getNum-1] = stateSwitch[getNum-1] == 0 ? 1 : 0;
int idxLeft = getNum - 2;
int idxRight = getNum;
while(idxLeft >= 0 && idxRight < numSwitch) {
if(stateSwitch[idxLeft] == stateSwitch[idxRight]) {
stateSwitch[idxLeft] = stateSwitch[idxLeft] == 0 ? 1 : 0;
stateSwitch[idxRight] = stateSwitch[idxRight] == 0 ? 1 : 0;
--idxLeft;
++idxRight;
}else {
break;
}
}
}
}
for(int i = 0; i < numSwitch; i++) {
System.out.print(stateSwitch[i] + " ");
if((i+1) % 20 == 0) {
System.out.println();
}
}
}
}
'Baekjoon Online Judge > Java' 카테고리의 다른 글
[Baekjoon Online Judge] 1874 - 스택 수열 / Java (0) | 2021.08.16 |
---|---|
[Baekjoon Online Judge] 2961 - 도영이가 만든 맛있는 음식 / Java (0) | 2021.08.12 |
[Baekjoon Online Judge] 1100 - 하얀 칸 / Java (0) | 2021.07.16 |
[Baekjoon Online Judge] 2667 - 단지번호붙이기 / Java (0) | 2021.06.26 |
[Baekjoon Online Judge] 1260 - DFS와 BFS / Java (0) | 2021.06.25 |