문제
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
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 |