코드는 완벽한데 왜 오류가 나는지 거의 한 시간 고민했다 -.-
오류 코드
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] arr = new int[n+1];
int[] copy = new int[n+1];
for (int i=0; i<=n; i++) {
arr[i] = i;
copy[i] = i;
}
for (int a=0; a<m; a++) {
st = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st.nextToken());
int j = Integer.parseInt(st.nextToken());
for (int b=0; b<=j-i; b++) {
arr[i+b] = copy[j-b];
}
}
오류 나는 이유!
우선 나는 두 개의 배열을 가지고 원래 배열에 다른 배열을 거꾸로 넣는 방법을 쓰려고 했다.
첫 번째 뒤집기까지는 원래대로 동작하는데, 두 번째부터는 업데이트된 arr를 가지고 뒤집기를 해야 한다.
그런데 위 코드에서는 arr이 바뀐 걸 업데이트하지 않고 그냥 쓰니까 오류가 나는 거임
정답 코드
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] arr = new int[n+1];
int temp = 0;
for (int i=0; i<=n; i++) {
arr[i] = i;
}
for (int a=0; a<m; a++) {
st = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st.nextToken());
int j = Integer.parseInt(st.nextToken());
while (i<j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
'Programming Language > Java' 카테고리의 다른 글
[Java] 백준 BOJ 14425: 문자열 집합 (0) | 2024.02.27 |
---|---|
[Java] 백준 BOJ 25206: 너의 평점은, BigDecimal (1) | 2024.01.30 |
[Java] 백준 BOJ 10810: 공 넣기, 배열 선언 시 Integer과 int의 차이 (0) | 2024.01.19 |
[Java] 백준 BOJ 2745: 진법 변환 (0) | 2024.01.09 |
[Java] 백준 BOJ 1152: 단어의 개수(asList 값 제거) (1) | 2023.12.01 |