728x90
반응형
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
※ 런타임 오류 나는 소스
import java.io.*;
public class NumberSort3 {
public static void main(String[] args) throws NumberFormatException, 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];
for (int i = 0; i < arr.length; i++) arr[Integer.parseInt(br.readLine())-1]++;
for (int i = 0; i < arr.length; i++) {
while(arr[i]-- > 0) bw.write(i+1 + "\n");
}
bw.flush();
}
}
※ 통과되는 소스
import java.io.OutputStreamWriter;
public class NumberSort3 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] arr = new int[10000];
int num = Integer.parseInt(br.readLine());
for( int i = 0 ; i < num ; i++) {
int a = Integer.parseInt(br.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();
}
}
※ 두 소스의 차이점
(1) 런타임 에러가 나는 소스는 변수할당이 동적이다. 배열의 크기 지정할때 고정적이지 않다.
(2) 통과되는 소스는 배열의 크기가 정해져있다.
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준/java] 1427번: 소트인사이드 - Collections.reverseOrder()활용 (0) | 2021.04.29 |
---|---|
[백준/java] 2231번: 분해합 - 브루트 포스(Brute Force) 사용 (0) | 2021.04.29 |
[백준/java] 2447번: 별 찍기 - 10 (분할 정복 활용하여 풀기) (0) | 2021.04.28 |
[백준/java] 11047번: 동전 0 - 그리디 알고리즘 사용 (0) | 2021.04.26 |
[백준/java] 2630번: 색종이 만들기 - 분할 정복 사용 (0) | 2021.04.26 |
댓글