알고리즘
[백준] 10810번 문제 해결
크딩학생
2024. 1. 10. 13:29
1. 문제상황
백준 10810번 문제를 풀던 중 아무리 봐도 이해가 되지 않는 오류가 나왔다
수정을 하려 했지만 오류가 해결되지 않아 블로그에 소스 코드를 검색해보았다
2. 나의 소스 코드와 해결 방법
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int M = scanner.nextInt();
int[] arr = new int[N];
for(int i = 0 ; i < M ; i++){
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
for( int d = a ; d <= b ; d++){
arr[d] = c;
}
}
for( int i = 0 ; i < N ; i++){
System.out.print(arr[i] + " ");
}
}
}
문제가 됐던 소스코드이다.
잘못 작성한 부분은 바로
for(int i = 0 ; i < M ; i++){
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
for( int d = a ; d <= b ; d++){
arr[d] = c;
} // 문제가 됐던 부분
}
공을 넣을 첫 번째 바구니의 번호인 a, 두 번째 바구니인 b, 공의 번호인 c를 입력받은 후
순회하며 c 값을 넣을 때 발생했다
문제가 요구하는 건 배열 안에 넣는 것이 아니라, 바구니에 넣는 것이었다
바구니의 번호를 -1로 해주어야 했다
예를 들자면, 2번 바구니는 컴퓨터에서는 1 인덱스에 위치해 있다
따라서 완성한 코드는 아래와 같다
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int M = scanner.nextInt();
int[] arr = new int[N];
for(int i = 0 ; i < M ; i++){
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
for( int d = a-1 ; d < b ; d++){
arr[d] = c;
}
}
for( int i = 0 ; i < N ; i++){
System.out.print(arr[i] + " ");
}
}
}
시작 인덱스와 종료 인덱스 모두 -1 해주어야 한다