최대 1 분 소요

[백준 2204번] 도비의 난독증 테스트

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
32
33
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
 
public class 백준_손수경_정답_2204 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        while (true) {
            int n = Integer.parseInt(br.readLine());
            ArrayList<String> list = new ArrayList<>();
            if (n == 0) {
                break;
            }
            
            for (int i = 0; i < n; i++) {
                String word = br.readLine();
                list.add(word);
            }
            //대소문자 상관없이 오름
            Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
            bw.write(list.get(0+ "\n");
            
        }
        bw.close();
    }
}
 
cs


처음에는 문자열 배열을 만들어서 Arrays.sort() 를 사용하려고 했다. 하지만 배열을 만들 때, 초기화 하는 것이 아니라 선언하는 것이므로 배열의 버퍼 크기 설정이 애매하다. .sort는 배열에 있는 모든 요소들을 다 sort 하는데, 거기에 NULL 이 껴있으면 에러가 뜨기 때문이다. 그래서 ArrayList를 만들어서 이 리스트를 대소문자 상관없이 오름차순으로 정렬시키고자 하였다.

Arrays.sort()

얘는 객체 타임 정렬로, 객체가 완전 초기화 되지 않은 이상 조금 힘들 것 같다^^

Collections.sort()

얘는 List 타임 정렬로, 딱 add한 만큼에 대한 정렬이 이루어지기 때문에 입력값을 정렬시키고자 한다면 이 메서드를 사용하는 것이 맞다.

댓글남기기