<aside> 💡 자료 구조/해시를 사용한 집합과 맵/정렬/문자열/트리를 사용한 집합과 맵
</aside>
Memory 151360KB Time 640ms Code Length 309B
from collections import Counter
N, M = map(int, input().split())
words = [input().strip() for _ in range(N)]
words = [word for word in words if len(word) >= M]
word_counter = Counter(words)
words = sorted(word_counter.items(), key=lambda x: (-x[1], -len(x[0]), x[0]))
for word in words:
print(word[0])
먼저, collections 모듈의 Counter 클래스를 import한다.
다음으로, 사용자로부터 두 개의 정수 N과 M을 입력받는다.
그 후, 사용자로부터 N개의 단어를 입력받는다. 이때, 각 단어의 앞뒤 공백을 제거한다.
입력받은 단어들 중에서 길이가 M 이상인 단어들만 선택하여 새로운 리스트를 만든다.
이렇게 만들어진 리스트를 Counter 클래스를 이용하여 각 단어의 등장 횟수를 센다.
그 후, 단어의 등장 횟수를 내림차순으로, 단어의 길이를 내림차순으로, 단어 자체를 오름차순으로 정렬한다.
마지막으로, 정렬된 단어들을 순서대로 출력한다.