본문 바로가기
백준

[백준] 10810번 : 공 넣기 – JAVA [자바]

by Hongwoo 2023. 8. 7.
반응형

https://www.acmicpc.net/problem/10810

 

10810번: 공 넣기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 10810번 공 넣기는 브론즈 3 난이도의 구현 및 시뮬레이션 문제이다.

 

이 문제에서는 1번부터 N번까지 번호가 적혀 있는 바구니가 주어지고 각각 바구니에는 공을 1개씩만 넣을 수 있다. 그리고, M개 줄에 걸쳐 정수 i j k가 주어진다. 이때, k가 적혀 있는 공을 i번 바구니부터 j번 바구니까지 넣으면 된다.

 

이때, 공을 다 넣었으면 각각 바구니에 몇 번이 쓰여있는 공이 있는지를 출력하면 된다.

 

우선 사이즈가 N+1인 배열을 만들고 인덱스 i는 i번째 바구니를 뜻한다. 사이즈를 N+1로 한 이유는 인덱스 i가 i번째 바구니를 뜻하기를 의도해서 그렇다. 이 이유는 인덱스는 0에서부터 시작하기 때문이다.

 

그리고 StringTokenizer를 이용해서 i, j, k를 입력받는다. 그리고 for-loop을 이용해서 arr [i]부터 arr [j]를 k로 설정해 주면 된다.

 

자세한 코드는 아래에 있는 코드를 참고하면 되겠다.

 

 


  • 코드

 

import java.io.*;
import java.util.*;

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());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        int[] arr = new int[n+1];
        for (int o = 1; o <= m; o++) {
            st = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st.nextToken());
            int j = Integer.parseInt(st.nextToken());
            int k = Integer.parseInt(st.nextToken());
            for (int x = i; x <= j; x++) {
                arr[x] = k;
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= n; i++) {
            sb.append(arr[i] + " ");
        }
        System.out.println(sb);
    }

}

 

반응형

댓글