본문 바로가기

백준

BOJ_1181 단어 정렬

백준 링크 : https://www.acmicpc.net/problem/1181

태그 : Comparator, TreeSet

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(reader.readLine());
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < N; ++i)
            list.add(reader.readLine());
        list.sort((s1, s2) -> {
            int r = s1.length() - s2.length();
            if (r != 0) return r;
            return s1.compareTo(s2);
        });
        String prev = "";
        for (String s : list) {
            if (prev.equals(s) == false)
                System.out.println(s);
            prev = s;
        }
    }
}
list.sort((s1, s2) -> {
     int r = s1.length() - s2.length();
     if (r != 0) return r;
     return s1.compareTo(s2);
});

ArrayList 클래스의 sort 매소드를 호출하여 정렬한다. 이 메소드의 파라미터는 Comparator 객체이다. 이 객체의 compare 메소드는, 두 문자열을 비교하여, 첫째 파라미터 값의 정렬 순서가 앞이면 음수를 리턴하고, 둘째 파라미터 값이 정렬 순서가 앞이면 양수를 리턴하고, 두 파라미터 값이 같으면 0을 리턴해야 한다.

이 Comparator 객체를 lambda expression 문법으로 구현하였다.

'백준' 카테고리의 다른 글

BOJ_2667 단지번호붙이기  (0) 2023.02.19
BOJ_1991 트리 순회  (0) 2023.02.19
BOJ_17484 진우의 달 여행  (0) 2023.02.12
BOJ_22233 가희와 키워드  (0) 2023.02.12
BOJ_5073 삼각형과 세 변  (0) 2023.02.12