[백준] 1181번 단어정렬 Java

dustle·2023년 3월 15일
1

단어정렬

중복 제거가 문제 조건이어서 Set을 사용합니다.

중복을 제거하고 list로 옮긴다음 정렬 라이브러리를 사용할 생각으로 sort를 하였는데

단순히 정렬만 하면 예시 그대로 나오지 않게 됩니다.

그래서 Comparator을 조건에 맞게 수정했습니다.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
        HashSet<String> set = new HashSet<>();

        int n = Integer.parseInt(reader.readLine());
        //중복 값 제거 위해 set 사용
        for(int i = 0; i < n; i++){
            set.add(reader.readLine());
        }

        String[] array = set.stream().toArray(String[]::new);

        //단어 순서 그대로 정렬하면 꼬임 단어 길이 조건 반영
        Arrays.sort(array, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                if(s1.length() > s2.length())
                    return 1;
                else if (s1.length() < s2.length())
                    return -1;
                else
                    return s1.compareTo(s2);
            }
        });

        for (String i:array) {
            writer.write(i + "\n");
        }
        writer.flush();
    }
}

0개의 댓글

관련 채용 정보