본문 바로가기

CS/알고리즘

★ 백준 20920 파이썬 영단어 암기는 어려워- 딕셔너리&람다식 응용

 

1) 람다식 참고

https://velog.io/@euisuk-chung/파이썬-시각화-마스터하기-람다Lambda-함수

 

파이썬 마스터하기 : 람다(Lambda) 함수

람다(lambda) 함수는 함수형 프로그래밍에서 중요한 개념 중 하나로, 익명 함수(anonymous function)라고도 부릅니다.

velog.io

 

2) 딕셔너리 정렬 참고

https://velog.io/@yejinleee/파이썬-딕셔너리-정렬

 

파이썬 딕셔너리 정렬

딕셔너리 키값으로 정렬하기, 벨류값으로 정렬하기, 역순으로 정렬하기 / dic.items(), lambda x , reverse

velog.io

 

개수, 길이는 내림차순

알파벳순서는 오름차순

 

sorted는 오름차순 정렬이 default인데

이렇게 단어의 개수와 길이는 내림차순, 알파벳순서는 오름차순 해줘야 하는 경우

-를 붙여서 원소 하나만 내림차순이 되도록 해주어야 함

import sys
N,M=map(int, sys.stdin.readline().split())
words=[]

for i in range(N):
    w=sys.stdin.readline().rstrip()
    words.append(w)

d=dict()

for w in words:
    if len(str(w))<M:#M보다 짧은 단어들은 패스
        continue
    else:
        if w in d: #key는 단어, value는 빈도수
            d[w]+=1
        else: #이번에 처음 나온 단어
            d[w]=1
        
temp=sorted(d.items(), key=lambda a: ( -a[1], -len(a[0]), a[0] ) ) #len(x[0])이다. 주의.  단어는 키값에 있으니까!

for w in temp:
    print(w[0])