문제
코드
import sys
from functools import cmp_to_key
input = sys.stdin.readline
def cmpDic(a,b):
if(a[1]<b[1]):
return 1
elif (a[1]>b[1]):
return -1
if(len(a[0])<len(b[0])):
return 1
elif(len(a[0])>len(b[0])):
return -1
if a>b:
return 1
else:
return -1
N, M= map(int,input().split())
res={}
for i in range(N):
a=input().rstrip()
if(len(a)<M):
continue
if(a in res):
res[a]+=1
else:
res[a]=1
res = [(k, v) for k, v in res.items()]
res.sort(key=cmp_to_key(cmpDic))
for i,j in res:
print(i)
풀이
- 영단어들을 조건에 맞게 정렬시킨다.
- N,M을 입력받는다.
- N개의 단어를 받으면서 길이가 M 이상인 단어들만 res에 넣어준다.
- res는 딕셔너리를 사용해서 여러번 나온 단어들은 +1씩 해준다.
- 입력받은 단어들을 (key, value)의 튜플로 이루어진 리스트로 변환한다.
- 변환한 리스트를 조건에 맞게 정렬한다
- 자주 나오는 단어일수록 앞에 배치한다.
- 해당 단어의 길이가 길수록 앞에 배치한다.
- 알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다
- 정렬한 res를 출력한다.
'알고리즘' 카테고리의 다른 글
[프로그래머스] 미로 탈출 python (1) | 2024.02.13 |
---|---|
[프로그래머스] 짝지어 제거하기 python (0) | 2024.02.09 |
[프로그래머스] 파일명 정리 python (0) | 2024.02.01 |
[프로그래머스] 석유 시추 python (0) | 2024.01.31 |
[백준] 2304 창고 다각형 python (0) | 2024.01.23 |