PLOD

[백준] 단어 정렬(1181) 본문

대외 활동 및 IT 지식/알고리즘 문제 풀이 정리

[백준] 단어 정렬(1181)

훌룽이 2026. 4. 10. 21:03

🔗 문제 링크

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

✅ 코드

import java.io.*;
import java.util.*;

public class 백준_1181 {
    static int n;
    static Set<String> set;
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        n = Integer.parseInt(br.readLine());
        set = new HashSet<>();

        for(int i = 0 ; i < n ; i++){
            set.add(br.readLine());
        }

        String[] arr = set.toArray(new String[0]);

        Arrays.sort(arr, (a,b) ->{
            if(a.length() == b.length()){
                return a.compareTo(b);
            }else{
                return a.length() - b.length();
            }
        });

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

        br.close();
    }
}

💡 배운 점 & 느낀 점

1.Java에서 Set<String>을 String[] 배열로 변환할 때

String[] arr = set.toArray(new String[0]);

※ Set 자료구조를 List로도 바꿀 수 있음

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

2. String 정렬을 할때, 문자열 기준 오름차순(길이가 같다면 사전 순) 람다식 정렬

Arrays.sort(arr, (a,b) ->{
    if(a.length() == b.length()){
        return a.compareTo(b);
    }else{
        return a.length() - b.length();
    }
});
Comments