https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
풀이
스위치의 상태를 입력받고 학생의 성별에 따라 다르게 처리하면 된다.
스위치 배열의 인덱스를 1부터 시작하여 n까지 입력받기로 정했기 때문에 이후 인덱스의 범위를 체크할 때 1부터 n까지 체크해야 한다.
코드
import java.io.*;
import java.util.*;
public class Main {
static int n;
public static void chageSwitchOne(int value, int[] switches) {
for (int i = value; i <= n; i += value) {
switches[i] = 1 - switches[i];
}
}
public static void chageSwitchTwo(int value, int[] switches) {
switches[value] = 1 - switches[value];
int i, j;
i = value - 1;
j = value + 1;
while(i >= 1 && j <= n) {
if (switches[i] != switches[j])
break;
switches[i] = 1 - switches[i];
switches[j] = 1 - switches[j];
i--;
j++;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
int[] switches = new int[n+1];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 1; i <= n; i++) {
switches[i] = Integer.parseInt(st.nextToken());
}
int k = Integer.parseInt(br.readLine());
for (int i = 0; i < k; i++) {
st = new StringTokenizer(br.readLine());
int key = Integer.parseInt(st.nextToken());
int value = Integer.parseInt(st.nextToken());
if (key == 1) {
chageSwitchOne(value, switches);
}
else {
chageSwitchTwo(value, switches);
}
}
for (int i = 1; i <= n; i++) {
System.out.print(switches[i] + " ");
if (i % 20 == 0) {
System.out.println();
}
}
}
}
728x90
'Algorithm 문제 풀이 > 백준' 카테고리의 다른 글
[백준] 10994번 : 별 찍기 - 19 - 자바[Java] (0) | 2022.09.10 |
---|---|
[백준] 1759번 : 암호 만들기 - 자바[Java] (0) | 2022.09.09 |
[백준] 4396번 : 지뢰찾기 - 자바[Java] (0) | 2022.09.09 |
[백준] 2578번 : 빙고 - 자바[Java] (0) | 2022.09.09 |
[백준] 14476번 : 소가 길을 건너간 이유 1 - 자바[Java] (0) | 2022.09.08 |