Baekjoon

백준 1181번 단어 정렬(Java)

백엔드 규니 2020. 1. 18. 05:46
728x90
반응형

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

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

 

 

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
import java.util.*;
 
public class WordSort{
 
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        HashSet<String> set = new HashSet<>();
        int n = input.nextInt();
        for (int i = 0; i < n; ++i) {
            set.add(input.next());
        }
 
        ArrayList<String> list = new ArrayList<>(set);
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String v1, String v2) {
                if(v1.length() > v2.length())
                    return 1;
                else if(v1.length() < v2.length())
                    return -1;
                else
                    return v1.compareTo(v2);
            }
        });
 
        for(String s : list)
            System.out.println(s);
    }
}
 
 
 

 

Comparator 인터페이스를 이용해서 정렬의 기준을 재정의 했다. 길이가 짧은 순서대로 정렬을 하고 길이가 같다면 다시 두개를 비교해서 사전순으로 정렬하는 것이다. 

 

 

https://devlog-wjdrbs96.tistory.com/68?category=830071

 

[JAVA]Array.sort 와 Collections.sort 의 차이

두개의 차이는 그냥 직관적으로도 정렬을 해주는 역할이고, Array.Sort는 배열을 정렬해주는 것이고 Collections.sort는 클래스의 객체를 정렬해주는 것이라고 생각이 든다. 파이썬에서는 sort가 있어서 너무 편했..

devlog-wjdrbs96.tistory.com

여기서 Comparator 과 Comparable 의 차이를 이해하고 문제를 풀어보자.

반응형