1. 문제 링크
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
2. 문제 및 입출력예제
3. 문제 풀이
문제에 나와있는 내용을 차근차근 풀면 된다.
주의할 점은 스위치가 1번부터 시작된다는 것이다.
또한 20개씩 나눠서 출력해야 한다는 점도 꼭 보고 제출합시다..
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
private static int[] btn;
public static void main(String[] args) throws Exception {
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
btn = new int[N+1];
String[] split = br.readLine().split(" ");
for (int i = 1; i < N+1; i++) {
btn[i] = Integer.parseInt(split[i-1]);
}
int stu = Integer.parseInt(br.readLine());
for (int a = 0; a < stu; a++) {
split = br.readLine().split(" ");
int gender = Integer.parseInt(split[0]);
int have = Integer.parseInt(split[1]);
if (gender == 1) { // 남
for (int j = have; j < N+1; j+=have) {
change(j);
}
}
else { // 여
change(have);
int temp = 1;
while (true) {
if ((have - temp) >= 1 && (have + temp) <= N) {
if (btn[have - temp] == btn[have + temp]) {
change(have - temp);
change(have + temp);
temp++;
}
else {
break;
}
}
else {
break;
}
}
}
}
for(int i=1;i<N+1;i++) {
sb.append(btn[i]+" ");
if((i)%20 == 0) {
sb.append("\n");
}
}
System.out.println(sb);
}
private static void change(int j) {
if (btn[j] == 0) {
btn[j] = 1;
} else {
btn[j] = 0;
}
}
}
'ALGORITHM' 카테고리의 다른 글
백준 7576 토마토 (Java) (0) | 2023.02.13 |
---|---|
백준 14501 퇴사 (Java) (0) | 2023.02.12 |
백준 15650 N과 M (2) (Java) (0) | 2023.02.10 |
백준 15649 N과 M (Java) (0) | 2023.02.09 |
백준 9095 1, 2, 3 더하기 (Java) (0) | 2023.02.08 |