본문 바로가기

Baekjoon

[Baekjoon]백준 20920 영단어 암기는 괴로워(실버 3) - Python

문제설명
예제

문제 조건이 많기 때문에 자세히 살펴보아야한다 

일단 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)