바위 뚫는중

[BOJ] 백준 20920. 영단어 암기는 괴로워 - 문자열 본문

Algorithms/백준

[BOJ] 백준 20920. 영단어 암기는 괴로워 - 문자열

devran 2023. 10. 21. 01:20
반응형

🥈 영단어 암기는 괴로워

문제

https://www.acmicpc.net/problem/20920

💡 아이디어

  1. 자주 나오는 단어일수록 앞에 배치한다.
  2. 해당 단어의 길이가 길수록 앞에 배치한다.
  3. 알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다

lambda를 활용해서 정렬해주면 될 것 같다

먼저, 2중배열로 단어 카운트를 저장해주자

📝 풀이

배열로 풀었는데 생각만큼 잘안됐다,,그 와중에 놀라운 방법을 찾아냄 → DICT!!

key 와 value 값이 있는 dict가 제격이었다..후 많이하자 연습많이해~

import sys
input = sys.stdin.readline
m, n = map(int, input().split())

dict = {}
for i in range(m):
    tmp = input().rstrip()
    if len(tmp) >= n: # 길이가 n이상일때 
        if tmp in dict:
            dict[tmp] += 1
        else:
            dict[tmp] = 1

sorted_dict = sorted(dict.items(), key = lambda x: (-x[1],-len(x[0]), x[0]))
# print(sorted_dict)

for items in sorted_dict:
    print(items[0])

🤓 느낀점

sort 할때, lambda로 다중조건 걸어서 정렬!

for문으로 dict요소 하나씩 출력하기~ dict만세!!

반응형