[정렬] 단어 정렬

2021. 7. 18. 14:02백준

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

입력받은 단어들을

1. 짧은 순

2. 사전 순

으로 정렬하면 된다.

 

짧은순으로 정렬한 후 그 안에서 사전순으로 정렬하려고 하면 복잡해진다.

 

그냥

1. 사전 순

2. 짧은 순

으로 순서대로 정렬하면 조건에 만족하게 된다.

 

from sys import stdin

N = int(stdin.readline())

words: set = set()
for i in range(N):
    word = str(stdin.readline()).replace('\n', "")
    words.add(word)

arr = list(map(lambda x: [len(x), x], words))
arr.sort(key=lambda x: x[1])
arr.sort(key=lambda x: x[0])

for d in arr:
    print(d[1])​