"""
입출력 예시)
13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours
-> i
im
it
no
but
more
wait
wont
yours
cannot
hesitate
"""
## 의사코드 ##
# 길이가 짧은 것부터 출력 -> 길이를 우선순위로 우선순위 큐
# heapq.heappush(heap, (len(s), s)) # (문자의 길이, 문자)
# 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력
# -> answer라는 리스트를 생성하고, heappop한 문자를 answer에 저장
# if 문자 in answer: continue
통과한 코드
import heapq
n = int(input())
heap = [] # 우선순위 큐
answer = []
for i in range(n):
s = str(input())
heapq.heappush(heap, (len(s), s)) # (문자의 길이, 문자)
# 우선순위 큐에서 데이터 꺼내기
while heap:
len_temp, temp = heapq.heappop(heap)
# 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력
if temp in answer:
continue
answer.append(temp)
print(temp)
-> 문자의 길이를 우선순위로 해서 우선순위 큐인 heapq 활용
다른 풀이
import sys
n = int(sys.stdin.readline())
lst = []
for i in range(n):
lst.append(sys.stdin.readline().strip())
set_lst = set(lst)
lst = list(set_lst)
lst.sort()
lst.sort(key = len)
for i in lst:
print(i)
-> set()으로 중복 제거 후, sort() 함수의 key를 len으로 설정해서 문자의 길이를 기준으로 정렬