최근 글 ✨

[백준] 2751 수 정렬하기 2 Java

문제

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로 출력해주니 잘 동작했다.

 

문제 출처

https://www.acmicpc.net/problem/2751