코린이의 소소한 공부노트

[백준 온라인 저지] 10989. 수 정렬하기 3 본문

코딩테스트 풀이/JAVA

[백준 온라인 저지] 10989. 수 정렬하기 3

무지맘 2023. 4. 7. 15:03

- 입력: 첫째 줄에 수의 개수 N(1 N 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

 

- 출력: 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 카운팅 정렬을 사용한다.

 

import java.util.*;
import java.io.*;
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));
        int[] nums = new int[Integer.valueOf(br.readLine())];
        int max = Integer.MIN_VALUE;
        for(int i=0 ; i<nums.length ; i++){
            nums[i] = Integer.valueOf(br.readLine());
            if(nums[i]>max) max = nums[i];
        }
        int[] counting = new int[max+1];
        for(int i : nums)
            counting[i]++;
        for(int i=1 ; i<counting.length ; i++)
            counting[i] += counting[i-1];
        int[] result = new int[nums.length];
        for(int i=0 ; i<nums.length ; i++)
            result[--counting[nums[i]]] = nums[i];
        for(int i=0; i<nums.length ; i++)
            bw.write(result[i]+"\n");
        bw.flush(); bw.close();
    }
}