반응형

* 핵심

Comparator 사용하여 조건 만족


* 문제

*개념

Comparator 를 이용하여 길이가 짧은 것부터, 같으면 사전순으로 정렬한다.


* 소스코드

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
import java.io.*;
import java.util.*;
 
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
 
        int n = Integer.parseInt(br.readLine());
        HashSet hs = new HashSet();     //중복 제거
        ArrayList<String> alist = new ArrayList<>();
        while (n-->0) {
            String s = br.readLine();
            if (!hs.contains(s)) {
                hs.add(s);
                alist.add(s);
            }
        }
        alist.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if (o1.length() == o2.length()) return o1.compareTo(o2);    //사전순
                else return Integer.compare(o1.length(), o2.length());      //길이 오름차순
            }
        });
        for (int i = 0; i < alist.size(); i++) {
            sb.append(alist.get(i)).append("\n");
        }
        System.out.println(sb);
    }   //End of Main
}
cs


반응형