파게로그

[백준 1181번] 단어 정렬 본문

콤퓨타 왕왕기초/PS

[백준 1181번] 단어 정렬

파게 2020. 11. 15. 05:33

문제 링크: N번 제목

https://www.acmicpc.net/problem/문제번호

 

파이썬은 확실히 편하긴 하다... 말도 안되게 편하다고 생각한다.

다만 항상 Java에도 익숙해지는 것이 필요하다!

 

Python

# 입력
n = int(input())
words_set = set()
for i in range(n):
    words_set.add(input())

# 리스트로 변환
words_list = list(words_set)

# 정렬
sorted_words_list = sorted(words_list, key = lambda x: (len(x), x))

# 출력
for item in sorted_words_list:
    print(item)

 

Java

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Comparator;
import java.util.Collections;

public class Main {
    public static void main(String[] args) {
        /* 입력 */
        HashSet<String> hashSet = new HashSet<String>();
        ArrayList<String> list = new ArrayList<String>();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i=0; i<n; i++)
            hashSet.add(sc.next());
        
        /* 리스트로 변환 */
        for (String item : hashSet)
            list.add(item);
        
        /* 정렬 */
        // 익명 클래스를 통한 정렬
        Comparator<String> wordComparator = 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 s1.compareTo(s2);
                    // 사전 순서대로 정렬.
                }
                else return -1;
            }
        };
        
        Collections.sort(list, wordComparator);
        
        /* 출력 */
        for (String item : list)
            System.out.println(item);
    }
}
Comments