[백준] 10989: 수 정렬하기3

SuKong·2020년 8월 13일
0
post-thumbnail

'10989- 수 정렬하기3' 문제로 이동!

👉문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
(JAVA) 시간제한 : 3초 / 메모리제한 : 512MB

👉입력

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

예시 -
10
5
2
3
1
4
2
3
5
1
7

👉출력

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

예시 -
1
1
2
2
3
3
4
5
5
7


✍내 풀이

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception, IOException {
		int[] arr = new int[10000];
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int num = Integer.parseInt(bf.readLine());
		for( int i = 0 ; i < num ; i++) {
			int a = Integer.parseInt(bf.readLine());
			arr[a-1]++;
		}
		for( int i = 0 ; i < 10000 ; i++) {
			for( int j = 0 ; j < arr[i] ; j++) {
				bw.write(i+1+"\n");
			}
		}
		bw.flush();
	}
}


✍Note

  • 자바에서 입출력 시간을 줄이는 방법 :
    Scanner, System.out.println대신 ==> BufferedReader, BufferedWriter사용!

  • Counting Sort (계수 정렬) :
    시간복잡도 O(n)짜리 빠른 정렬방식!
    해당 문제에서는 입력받을 수 있는 수가 10000이하로 정해져 있기 때문에 Counting Sort를 쓸 수 있다.

profile
안녕하세요 🤗

0개의 댓글