문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
ArrayList<Integer> array = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for(int i=0; i<N; i++){
array.add(Integer.valueOf(br.readLine()));
}
Collections.sort(array);
for(Integer i: array){
sb.append(i).append('\n');
}
System.out.println(sb);
}
}
문제를 다 풀고 찾아보니 Arrays.sort()로 풀면 시간 초과가 난다는 말이 많았다. 나는 처음부터 Collections.sort()를 사용해서 상관은 없었는데 출력해줄 때 for문 안에서 출력을 해주려고 하면 시간 초과가 난다. 그래서 StringBuilder로 출력해주니 잘 동작했다.
문제 출처
'Study > Test(Java)' 카테고리의 다른 글
| [백준] 11650 좌표 정렬하기 Java (0) | 2023.07.06 |
|---|---|
| [백준] 10814 나이순 정렬 Java (0) | 2023.07.06 |
| [백준] 1181 단어 정렬 Java (0) | 2023.07.06 |
| [백준] 11050 이항 계수 1 Java (0) | 2023.07.06 |
| [백준] 2609 최대공약수와 최소공배수 Java (0) | 2023.07.05 |