Algorithm/[BOJ]

[Java] 백준 10810번 : 공 넣기

정보통신 고심이 2024. 3. 8. 11:56

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

 

접근법

1) 배열 N 길이 할당

2) 반복문 (M번)

3) 배열에 값을 할당하여 값을 갱신

 

고민 된 부분

1) i, j, k 연속 할당

2) 두번째 반복문 선언시 변수 a 고민

3) 두번째 반복문 조건을 a = i-1로 해야 배열이 0부터 시작하는 것에 맞음

 

오답 코드

더보기
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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
       
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken()); 
        int M = Integer.parseInt(st.nextToken()); 
       
        int[] arr = new int[N];
        
        for(int l=0; l<M; l++) {           
           int i = Integer.parseInt(st.nextToken()); 
            int j = Integer.parseInt(st.nextToken()); 
            int k = Integer.parseInt(st.nextToken());
            for(int a=i; i<=j; a++) {
               arr[a]= k;
            }
        }
        
        for(int i=0; i<arr.length; i++) {
            bw.write(String.valueOf(arr[i]));
            bw.write(" ");
        }
        br.close();
        bw.flush(); //  버퍼에 있는 모든 데이터를 출력
      bw.close(); // Buffer writer close    
    }
}

 

 

정답 코드

더보기
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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
       
        StringTokenizer st = new StringTokenizer(br.readLine());
    	int N = Integer.parseInt(st.nextToken()); 
        int M = Integer.parseInt(st.nextToken()); 
       
        int[] arr = new int[N];
        
        for(int l=0; l<M; l++) {        	
        	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 a=i-1; a<j; a++) {
            	arr[a]= k;
            }
        }
        
        for(int i=0; i<arr.length; i++) {
        	 bw.write(String.valueOf(arr[i]));
        	 bw.write(" ");
        }
        br.close();
        bw.flush(); //  버퍼에 있는 모든 데이터를 출력
		bw.close(); // Buffer writer close    
    }
}

String tokenizer를 다른 반복문에서 한번 더 사용하려면 한번 더 선언해야 한다.