[JAVA] 단어 정렬

NoHae·2025년 2월 26일

백준

목록 보기
14/106

문제 출처

단계별로 풀어보기 > 정렬 > 단어 정렬
https://www.acmicpc.net/problem/1181

문제 설명

알파벳 소문자로 이루어진 N개의 단어가 주어질 때, 다음을 바탕으로 정렬하라.
1. 길이가 짧은 단어부터
2. 길이가 같다면 사전 순서대로

접근 방법

Arrays.sort를 이용하여 정렬한다.
단어의 길이가 같다면 compareTo를 이용하여 사전 순으로 정렬한다.

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class 단어_정렬 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        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,(e1,e2) -> {
           if(e1.length() == e2.length()){
               return e1.compareTo(e2);
           }else{
               return e1.length() - e2.length();
           }
        });

        StringBuilder sb = new StringBuilder();
        sb.append(arr[0]).append("\n");
        for(int j = 1; j<N; j++){
            if(!arr[j].equals(arr[j-1])){
                sb.append(arr[j]).append("\n");
            }
        }
        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();
    }
}

Review

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

public class 단어_정렬_review {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        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, (s1,s2) -> {
           if(s1.length() == s2.length()){
               return s1.compareTo(s2);
           }else{
               return s1.length() - s2.length();
           }
        });

        StringBuilder sb = new StringBuilder();
        sb.append(arr[0] + "\n");
        for(int j = 1; j<N; j++){
            if(!arr[j].equals(arr[j-1])){
                sb.append(arr[j] + "\n");
            }
        }

        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();
    }
}

알게된 점

compareTo 메소드를 통해 사전순으로 정렬할 수 있다.

문제푼 흔적


Review

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글