코딩 테스트/JAVA - 백준 단계별로 풀어보기

[백준 Java] 정렬: - 1181번: 단어 정렬

kms152000 2025. 3. 22. 08:58

 

 

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());
        String[] arr = new String[N];

        for (int i = 0; i < N; i++) {
            arr[i] = br.readLine();
        }

        Arrays.sort(arr, new Comparator<String>() {
            public int compare(String s1, String s2) {
                // 단어가 길이가 같을 경우
                if (s1.length() == s2.length()) {
                    return s1.compareTo(s2); // 사전 순으로 정렬
                }
                else {
                    return s1.length() - s2.length();
                }
            }
        });

        sb.append(arr[0]).append("\n");

        for (int i = 1; i < N; i++) {
            // 중복 제거
            if (!arr[i].equals(arr[i - 1])) {
                sb.append(arr[i]).append("\n");
            }
        }

        bw.write(String.valueOf(sb));

        br.close();
        bw.flush();
        bw.close();
    }
}