728x90
반응형
https://www.acmicpc.net/problem/1244
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class P1244 {
static int n;
static int[] arr;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arr = new int[n + 1]; // 스위치의 상태를 저장할 배열
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 1; i <= n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int studentNum = Integer.parseInt(br.readLine());
for (int i = 0; i < studentNum; i++) {
st = new StringTokenizer(br.readLine());
int gender = Integer.parseInt(st.nextToken());
int num = Integer.parseInt(st.nextToken());
if (gender == 1) {
boy(num);
} else if (gender == 2) {
// 여학생
girl(num);
}
}
for (int i = 1; i <= n; i++) {
bw.append(arr[i] + " ");
if(i%20==0) {
bw.append("\n");
}
}
bw.flush();
br.close();
bw.close();
}
static void toggle(int idx) {
if (arr[idx] == 1)
arr[idx] = 0;
else
arr[idx] = 1;
}
static void boy(int num) {
for (int i = num; i <= n; i += num) {
toggle(i);
}
}
static void girl(int num) {
toggle(num);
int left = num - 1;
int right = num + 1;
while (left >= 1 && right <= n) {
if (arr[left] == arr[right]) {
toggle(left);
toggle(right);
left--;
right++;
} else {
break;
}
}
}
}
남학생, 여학생의 경우를 각각 함수 boy(), girl()로 만들었다.
문제에서 언급한 조건대로 다 구현하면 되는데,
arr에 스위치들의 정보를 저장해서 사용했다.
이 때 arr[0]은 사용하지 않고 1번인덱스부터 사용했는데,
0번인덱스를 사용하지 않는다는것을 간과하고, 여학생 girl()함수를 작성하다가 오류가 났다.
while (left >= 1 && right <= n) {
이런 조건문이 있었는데, left>=0으로 적으면 사용하지 않는 0번인덱스까지 보게되니 left>=1로 했어야됐다.
728x90
반응형
'코딩 > 백준-자바' 카테고리의 다른 글
[자바] 백준 2164번: 카드2 (0) | 2023.02.27 |
---|---|
[자바] 백준 9017번: 크로스 컨트리 (0) | 2023.02.26 |
[자바] 백준 20125번: 쿠키의 신체 측정 (0) | 2023.02.24 |
[자바] 백준 25757번:임스와 함께하는 미니게임 (1) | 2023.02.23 |
[자바] 백준 4659번: 비밀번호 발음하기 (0) | 2023.02.22 |
댓글