[BOJ] 20920 영단어 암기는 괴로워

oneju·2023년 5월 22일
0

Algorithm

목록 보기
8/11
post-thumbnail

[백준] 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.keyx.item이 아닌 x[index]가 들어가게 되는 거시다
[github] 20920 해결코드
처음에 리스트로 해결해보려고 했는데 정렬이 잘 안돼서 실패했다
지금 생각해보면 리스트로 풀었어도 시간초과가 났을 것 같다
나도 딕셔너리를 잘 활용하는 멋진 알고리즈머가 될거야💫

profile
hello, world

0개의 댓글