[백준] 20920 문제링크
n개의 단어 중 m보다 긴 단어들을 출력한다
( 정렬 조건 )
1. 자주 나오는 단어
2. 단어의 길이가 긴
3. 알파벳 순
mem = {}
딕셔너리를 이용해서 진행한다
for _ in range(n):
word = input().strip()
if len(word) >= m:
if word in mem:mem[word]+=1
else:mem[word] = 1
단어를 입력받고
딕셔너리의 키 값으로 이미 존재한다면 value에 +1을 해주고
존재하지 않다면 1로 값을 넣어준다
mem = sorted(mem.items(), key=lambda x:(-x[1],-len(x[0]),x[0]))
딕셔너리에 정렬은 리스트에 정렬과 형식이 다른 것 같다
리스트에서 하던 방식처럼 A.sort()
를 하면 A는 리스트가 아니라는 에러 메세지가 나온다
sorted({정렬할 것}, key = lambda x:{정렬 조건})
정렬할 것 : lambda식에서 어떤 값을 x로 지정할 것 인지 지정해준다
정렬 조건 : list.sort()에서 lambda식을 넣어주는 것과 같이 정렬조건을 넣어준다
딕셔너리안에 key 와 value 는 튜플형식으로 저장이 되어있기 때문에 조건을 x.key
나 x.item
이 아닌 x[index]
가 들어가게 되는 거시다
[github] 20920 해결코드
처음에 리스트로 해결해보려고 했는데 정렬이 잘 안돼서 실패했다
지금 생각해보면 리스트로 풀었어도 시간초과가 났을 것 같다
나도 딕셔너리를 잘 활용하는 멋진 알고리즈머가 될거야💫