10989번: 수 정렬하기 3
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
www.acmicpc.net
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
정렬 알고리즘은 여러가지 방법이 있지만, Arrays.sort()로 풀었을 때는 시간초과 판정을 받고, 더 빠른 Collections.sort()로 풀었을 때는 메모리 초과 판정을 받았다.
따라서 마지막에는 결국 Counting Sort알고리즘으로 문제를 해결했다.
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; 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)); int n = Integer.parseInt(br.readLine()); int[] arr = new int[n]; int[] count = new int[10000001]; for(int i=0; i<n; i++) arr[i] = Integer.parseInt(br.readLine()); for(int i=0; i<n; i++) count[arr[i]]++; for(int i=0; i<10000001; i++) for(int j=0; j<count[i]; j++) bw.write(i + "\n"); bw.flush(); bw.close(); } }
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.