문제 해결 아이디어
이 문제의 핵심은 (파이썬을 기준으로) dictionary를 사용하는 것이다.
노트를 리스트로 구현하여 문제를 풀면 시간 초과가 발생한다. key로 영단어, value로 횟수를 기록한다. 이후, lambda식을 통해 3가지 조건으로 정렬을 하였다.
Tip
딕셔너리 자료형의 정렬은 lambda를 자주 사용하여 정렬하게 된다.
•
비교할 아이템이 요소가 복수 개일 경우, 튜플로 우선순위를 정해줄 수 있다.
•
정렬 기준들의 오름차순 내림차순 설정을 각각 다르게 해주어야 할 경우
◦
-를 붙이면, 현재와 반대차순으로 정렬된다.
코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
note = {}
for i in range(n):
word = input().strip() # readline 사용 시 발생하는 개행문자 제거.
if len(word) >= m:
if word in note:
note[word] += 1
else:
note[word] = 1
note = sorted(note.items(), key=lambda x: (-x[1], -len(x[0]), x[0]))
for i in note:
print(i[0])
Python
복사