현재

[Java][BaekJoon][1181] 단어정렬(Comparator) 본문

알고리즘/백준

[Java][BaekJoon][1181] 단어정렬(Comparator)

AAAge 2024. 4. 23. 15:07

<문제>

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

 

1181번: 단어 정렬

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

www.acmicpc.net

<힌트>

더보기

・compare

・Colletions

・sort

 

<풀이코드>

더보기
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException{
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        Set<String> set = new HashSet<>();
        sc.nextLine();
        for(int i = 0; i < n ; i++){
            set.add(sc.nextLine());
        }

        List<String> list = new ArrayList<>(set);

        Collections.sort(list, new Comparator<String>() {

            @Override
            public int compare(String str1, String str2){
                if(str1.length() != str2.length()){
                    return Integer.compare(str1.length(), str2.length()); // str2로 정렬하면 내림차순, str1로 정렬하면 오름차순
                } else {
                    return str1.compareTo(str2);  // 길이가 같으면 알파벳순으로 정렬
                }
            }
           
        });

        for(String s : list){
            System.out.println(s);
        }

    }
}