익숙하지 않던 정렬에 대해 개념 정립하기 좋은 문제인 것 같다
문제에서 정렬 조건은 3가지이다.
그 외에도 단어를 저장할 때는 중복되지 않도록 해야한다.
# boj 20920
# 문제 조건 외에도 중복글자를 제거할 필요 있음.
n, m = map(int, input().split(" "))
dic = dict()
for i in range(n):
st = input()
if len(st) < m:
continue
else:
if st not in dic:
dic[st] = 1
else:
dic[st] += 1
sorted_dic = sorted(dic.items(), key=lambda x:(-x[1], -len(x[0]), x[0]))
for s in sorted_dic:
print(s[0])
정렬을 다중으로 해야할 때는, lambda에 대해서 ( ) 안에 조건을 여러개 작성하면 된다. 또한, "-" 를 사용한다면 역순으로 출력할 수 있다.
문제에서는 빈도와 길이는 내림차순, 사전은 오름차순이므로, 빈도와 길이에 -를 붙인다면 해결할 수 있다.