https://www.acmicpc.net/problem/20920
import sys
input = sys.stdin.readline
dic = {}
n, m = map(int, input().split())
for i in range(n):
s = input().rstrip()
if len(s) >= m:
if s not in dic:
dic[s] = 1
else:
dic[s] += 1
arr = sorted(dic.items(), key=lambda x: (-x[1], -len(x[0]), x[0]))
for i in arr:
print(i[0])
이 문제는 주어진 조건만 달성하면 무난하게 풀 수 있는 문제이다.
먼저 딕셔너리에 영단어와 그 개수를 넣는다. 넣을 때 영단어의 길이를 확인한다.
그 다음
- 자주 나오는 단어일수록 앞에 배치한다.
- 해당 단어의 길이가 길수록 앞에 배치한다.
- 알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다
라는 조건에 맞게 정렬하면 끝이난다.