본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

백준알고리즘


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


여기서 문제는 Scanner을 사용하면 안되고 BufferedReader, BufferedWriter을 사용해야 한다.

Scanner은 1024의 버퍼 사이즈 BufferedReader의 경우 8192의 버퍼 사이즈를 가지고 있다. 그래서 입력이 많을 수록 BufferedReader을 사용하는 것이 좋다.


그리고 숫자의 개수가 10000000이라고 했으니 Sort를 사용해도 시간 초과가 난다. 숫자의 개수는 10000000이지만

정렬할 숫자는 10000보다 작은 숫자라고 한다. 조건을 유의해야 한다.

배열의 길이를 10000+1(0을 포함하기 위해 + 1)로 하여 입력받는 숫자의 배열마다 ++을 해줘서 입력받은 숫자의 수를 계산한다.


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    static int[][] resultArray = null;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int count = Integer.parseInt(br.readLine());
        int []arr = new int[10001];
        
        for(int i=0; i < count; i++) {
            arr[Integer.parseInt(br.readLine())]++;
        }
        
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        for(int i=0; i < arr.length; i++) {
            if(arr[i] > 0) {
                for(int arri = 0; arri < arr[i]; arri++) {
                    bw.write(Integer.toString(i) + "\n");
                }
            }
        }
        
        br.close();
        bw.close();
    }
}