Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 수 정렬하기 3 (10989) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 수 정렬하기 3 (10989) (자바/Java)

luke-king 2024. 5. 5. 20:02

 

 

 

 

 

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

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

풀이.


 

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int num = Integer.parseInt(bf.readLine());
        int[] arr = new int[num];

        for (int i = 0; i < num; i++) {
            arr[i] = Integer.parseInt(bf.readLine());
        }

        Arrays.sort(arr);

        for (int i : arr) {
            sb.append(i).append('\n');
        }
        System.out.println(sb);
    }

}

 

오늘의 문제는 " 수 정렬하기 3 " 문제이다.

일반 문제랑 다르게 이번 문제는 답만 출력한다고 끝나는 문제가 아니다.

시간제한, 메모리 제한이 있는 문제다. 기준치에 들어가지 못한다면 런타임 에러 또는 시간 초과라는 문구와 실패하게 된다. 요즘 들어 알고리즘 풀며 성능 관련해서 관심이 생기기 시작했는데 이번 문제를 풀면서 첫걸음 하기에 좋았던 문제인 거 같다.

그럼 바로 문제풀이 가보겠다.

 

1. 여태 Scnanner를 사용했는데 성능 때문에 이번에는 BufferReader를 사용했다.

(Scanner를 사용하면 런타임에러 또는 시간초과가 나오게 된다.)

 

2. 다음으로 출력 해주기 위해 StringBuilder를 사용해 준다. 왜냐하면 StringBuilder를 사용하면 문자열을 처리하는데 최적화가 되어있어 연속적으로 문자열을 추가하거나 수정할 때 훨씬 빠른 성능을 제공한다.  

 

3. 다음으로는 10개의 입력값을 넣어준뒤 Arrays.sort() 함수를 통해 오름차순으로 정렬해 준다.

 

4. 정렬된 배열을 append()를 사용해 출력.