본문 바로가기

코딩 테스트 문제 풀이/백준

백준 - 1차원 배열 10810

백준은 꾸준히 풀어보고 있다.

쉬운 문제들은 넘어가고 헷갈렸던 문제들에 대해서만 풀이를 남겨보려한다.

 

문제

 

풀이

문제의 난이도는 어렵지 않은 것 같은데, 문제를 이해하는게 시간이 오래걸렸던 것 같다.

 

처음에, 바구니의 갯수 N과 바구니에 공을 넣는 횟수 M이 주어진다.

바구니에 공을 넣는다는게, 1 ~ N 번호의 바구니에 공을 한번씩 전부 집어넣는다는 의미이다.

 

둘째 줄부터는 공을 넣는 방식이라고 이해하면 된다.

1 2 3 의 숫자가 주어졌다면, 1번부터 2번 바구니까지 3번공을 전부 집어넣겠다는 것이다.

 

정리하자면, 공을 M번 넣을건데 각 횟수마다 어떻게 공을 집어넣을지 값을 받아서 계산하는 문제이다.

바구니에는 1개의 공만 들어가기 때문에, 만약 넣어야할 바구니에 공이 들어있다면 공을 교체한다.

 

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();

        int length = Integer.parseInt(st.nextToken());
        int cnt = Integer.parseInt(st.nextToken());

        int[] arr = new int[length];
        Arrays.fill(arr, 0); // 배열을 처음에 전부 0으로 초기화해준다.
        for(int i = 0; i < cnt; i++){
            st = new StringTokenizer(br.readLine());
            
            // 배열 인덱스가 0부터 시작하므로 -1 해준다.
            int from = Integer.parseInt(st.nextToken())-1;
            int to = Integer.parseInt(st.nextToken())-1;
            int num = Integer.parseInt(st.nextToken());
            
            for(int j = from; j <= to; j++){
                arr[j] = num;
            }
        }

        for(int val : arr){
            sb.append(val).append(" ");
        }
        System.out.println(sb.toString().strip());
        br.close();
    }
}

 

문제를 이해하고 나면 어렵지 않게 풀 수 있는 문제인 것 같다.