문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력 1
5
5
4
3
2
1
예제 출력 1
1
2
3
4
5
풀이 .
import java.io.*;
import java.util.Arrays;
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));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
for(int ans : arr) {
sb.append(ans).append("\n");
}
bw.write(sb.toString());
br.close();
bw.flush();
bw.close();
}
}
내장 정렬함수를 사용하면 된다.
n의 최대값은 백만이지만 Arrays.sort()로 해결이 가능하다.
(이 정렬은 원시 타입에 대하여 dual pivot quicksort를 사용한다. 일반 퀵정렬이 최대 O(n^2)까지 갈 수 있다는 점을 보완한 알고리즘이다.)
출력을 n줄로 해야하기 때문에 System.out.println()을 쓰면 시간초과가 발생한다.
입출력에 주의하자.
'알고리즘 문제 > 백준 온라인 저지' 카테고리의 다른 글
[BOJ] 11651 - 좌표 정렬하기 2 JAVA (0) | 2021.01.13 |
---|---|
[BOJ] 11650 - 좌표 정렬하기 JAVA (0) | 2021.01.13 |
[BOJ] 11052 - 카드 구매하기 JAVA (0) | 2021.01.13 |
[BOJ] 2011 - 암호코드 JAVA (0) | 2021.01.13 |
[BOJ] 2225 - 합분해 JAVA (0) | 2021.01.13 |