Hanbit the Developer

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

Algorithm/백준

[Python] 백준 1181번: 단어 정렬

hanbikan 2021. 5. 7. 11:52

www.acmicpc.net/problem/1181

import sys
input = sys.stdin.readline

N = int(input())

words = set()
for _ in range(N):
    words.add(input().rstrip())

words = list(words)
words.sort()
words.sort(key=lambda x: len(x))

for word in words:
    print(word)

우선 조건이 크게 두 개가 있다.

1. 조건에 따른 정렬

2. 중복된 문자는 1번만 출력함

 

일단 중복된 문자는 신경을 쓰지 않으므로, 순서는 없지만 중복을 허용하지 않는 집합(set)을 이용한다.

입력을 set()으로 초기화된 집합에 받아 중복을 걸러낸 이후에 이것을 리스트화 하여 정렬을 하고자 한다.

 

다음으론 정렬을 해야하는데 여기에 우선순위가 있다. 정렬에 우선순위 조건이 여러 개 있는 경우에는 우선순위가 낮은 것부터 정렬해나가면 된다. 그러니까, 사전 순으로 정렬한 다음 길이를 기준으로 정렬하면 되는 것이다.

 

마지막으로 정렬된 words를 출력만 하면 된다.