Progamming/BAEK JOON > 백준의 알고리즘

[백준] 10810번 : 공 넣기 - JAVA 문제

코딩밤 2023. 3. 9. 10:04
300x250

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

 

10810번: 공 넣기

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

www.acmicpc.net

 

 

문제

백준 알고리즘 10810번 문제 이미지

 

분석

i, j, k = I번 바구니부터 J번 바구니까지 K라는 번호의 공을 넣는다.

가장 처음 바구니에는 공이 들어 있지 않는다.

풀이
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int[] arr = new int[N];
        int M = sc.nextInt();

        for(int i = 0; i < M; i++) {
            int I = sc.nextInt();
            int J = sc.nextInt();
            int K = sc.nextInt();

            for(int j = I - 1; j < J; j++) {
                arr[j] = K;
            }
        }
        for(int k = 0; k < arr.length; k++) {
            System.out.print(arr[k] + " ");
        }
    }
}

 

Scanner 로 풀어준 문제입니다.

배열의 Index는 0부터 시작하기 때문에 I - 1을 해주어야 합니다.

 

풀이 2
import java.io.*;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine()); // StringTokenizer로 N과 M, " "(공백)으로 구분

        int N = Integer.parseInt(st.nextToken());
        int[] arr = new int[N];
        int M = Integer.parseInt(st.nextToken());

        for(int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());			 // StringTokenizer로 " "(공백)으로 구분
														
            int I = Integer.parseInt(st.nextToken());
            int J = Integer.parseInt(st.nextToken());
            int K = Integer.parseInt(st.nextToken());

            for(int j = I - 1; j < J; j++) {
                arr[j] = K;
            }
        }
        for(int k = 0; k < arr.length; k++) {
            bw.write(arr[k] + " ");
        }
        br.close();
        bw.flush();
        bw.close();
    }
}

 

BufferedReader 로 풀어준 문제입니다.

성능면에서 Scanner 보다 빠르기 때문에 연습해 보시는 것도 좋을 것 같습니다.

 

Scanner 를 왜 안 쓰고 
BufferedReader, BufferedWrite 를 사용하는지 궁금하시면
참고해 주세요.

2023.02.16 - [knowledge base/BAEK JOON > 백준의 알고리즘] - [백준] 15552번 : 빠른 A+B - JAVA, BufferedReader, BufferedWriter

 

[백준] 15552번 : 빠른 A+B - JAVA, BufferedReader, BufferedWriter

https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmic

codingnight.tistory.com

 

 

 

300x250