[백준(Baekjoon)][자바(java)] (10989) 수 정렬하기 3 / 정렬

728x90

 

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

public class Main {	// 계수 정렬  ( counting sort )

	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 i, n = Integer.parseInt( br.readLine() );
		int a[] = new int[n];
		int b[] = new int[n];
		int c[] = new int[10001];
		for( i = 0; i < n; i++ ) 
			a[i] = Integer.parseInt( br.readLine() );
		
		for( i = 1; i < c.length; i++ )
			c[i] = 0;
		for( i = 0; i < n; i++ ) 
			c[a[i]]++;
		for( i = 2; i < c.length; i++ )
			c[i] = c[i] + c[i-1];
		for( i = n-1; i >= 0; i-- ) {
			b[c[a[i]]-1] = a[i];
			c[a[i]]--;
		}
		
		for( int r : b ) 
			bw.write( r + "\n");
		bw.flush();
		bw.close();
	}
}
반응형