본문 바로가기

Algorithm

[백준/정렬] 10989 - 수 정렬하기3

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

예제 입력 1 복사

10 5 2 3 1 4 2 3 5 1 7

예제 출력 1 복사

1 1 2 2 3 3 4 5 5 7

 

www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

 


내 소스

 

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

public class Main{
    public static void main (String args[]) throws IOException  {
        int N;
        int i;
        int tmp;
        int arr[];
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(bf.readLine()); //Int
        arr = new int[10001];

        for(i=0; i<N; i++){
             tmp = Integer.parseInt(bf.readLine());
             arr[tmp]++;
        }
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));   //할당된 버퍼에 값 넣어주기
        for(i=0; i<10001; i++){
            if(arr[i]>0){
                for(tmp = 0; tmp < arr[i]; tmp++){
                    bw.write(i+"\n");   //버퍼에 있는 값 전부 출력
                }
            }
        }
        bw.close();   //스트림을 닫음
    }
}

 

* 범위가 정해져 있는 문제인 경우 Counting Sort가 Quick Sort보다 더 나음

* Java Scanner 이용시 시간 초과 -> BufferedReader, BufferedWriter 사용

'Algorithm' 카테고리의 다른 글

[백준/스택] 17298 - 오큰수  (0) 2021.04.01
[백준/그리디] 1541 - 잃어버린 괄호  (0) 2021.03.27
[백준/배열] 4344 - 평균은 넘겠지  (0) 2021.03.27
[백준/DP] 9084 - 동전  (0) 2020.02.01
[백준/DP] 2294 - 동전 2  (0) 2020.02.01