

문제 조건이 많기 때문에 자세히 살펴보아야한다
일단 N, M을 입력받고 N개의 단어를 입력받게되며, 길이가 M이상일때만 단어장에 추가하게된다
그리고 이번에도 등장횟수와 단어를 한꺼번에 저장하기 위해 딕셔너리를 활용하였다
for문을 통해 단어를 입력받고 길이가 M이상이라면 딕셔너리에 값 존재 여부를 확인한 후에
값이 없다면 1이라는 value값과 함께 저장해주고, 이미 존재한다면 value를 1 더해주면 된다
이후에는 lamda를 통해 value 기준으로 오름차순, 길이기준으로 오름차순, 사전순으로 내림차순 정렬을 해준다
그 이후에 다시 for문을 통해 각 줄마다 결과를 출력해주면 된다
import sys
N, M = map(int, input().split())
note = {}
for _ in range(N):
word = sys.stdin.readline().rstrip()
if len(word) >= M:
if word not in note:
note[word] = 1
else:
note[word] += 1
result = sorted(note.items(), key=lambda x: (-x[1], -len(x[0]), x[0]))
for wd, val in result:
print(wd)

'Baekjoon' 카테고리의 다른 글
| [Baekjoon]백준 7523 Gauß(브론즈 3) - Python (1) | 2024.12.13 |
|---|---|
| [Baekjoon]백준 10870 피보나치 수 5(브론즈 2) - Python (1) | 2024.12.12 |
| [Baekjoon]백준 2108 통계학(실버 3) - Python (0) | 2024.12.10 |
| [Baekjoon]백준 26069 붙임성 좋은 총총이(실버 4) - Python (1) | 2024.12.09 |
| [Baekjoon]백준 25192 인사성 밝은 곰곰이(실버 4) - Python (0) | 2024.12.08 |