본문 바로가기
백준

[백준] 20920번 : 영단어 암기는 괴로워 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 12. 12.
728x90
반응형

 

 

20920번: 영단어 암기는 괴로워

첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 영어 지문에 나오는 단어의 개수와 외울 단어의 길이 기준을 입력받는다. N, M = map(int, sys.stdin.readline().split())
  3. 영어 단어와 해당 단어가 나온 횟수를 저장할 딕셔너리를 생성한다. d = {}
  4. 영어 단어의 개수만큼 반복하며 for _ in range(N)
  5. 단어를 입력받는다. word = sys.stdin.readline().rstrip()
  6. 만약 해당 단어의 길이가 외울 단어의 길이 기준보다 짧으면 if (len(word) < M)
  7. 해당 단어는 외우지 않는다. continue
  8. 만약 해당 단어가 이미 나온 단어라 딕셔너리에 있다면 if (word in d)
  9. 해당 단어가 나온 횟수를 1 증가시킨다. d[word] += 1
  10. 반면에 해당 단어가 처음 나온 단어이면 else
  11. 해당 단어를 딕셔너리에 추가한다. d[word] = 1
  12. 정렬할 때는 정렬 기준이 낮은 것부터 적용해야 가장 마지막에 적용하는 정렬 기준대로 적용이 된다.
  13. 하여 가장 마지막 정렬 기준인 알파벳 사전 순으로 오름차순 정렬한다. d = sorted(d.items(), key = lambda x : x[0])
  14. 그다음 정렬 기준인 단어의 길이 순으로 내림차순 정렬한다. d = sorted(d, key = lambda x : len(x[0]), reverse=True)
  15. 마지막 정렬 기준인 단어가 나온 횟수를 기준으로 내림차순 정렬한다. d = sorted(d, key = lambda x : x[1], reverse=True)
  16. 최종 정렬한 딕셔너리를 하나씩 불러오며 for i in d
  17. 단어를 하나씩 출력한다. print(d[0])
반응형

3. 소스코드

import sys

N, M = map(int, sys.stdin.readline().split())

d = {}
for _ in range(N):
    word = sys.stdin.readline().rstrip()
    
    if (len(word) < M):
        continue
        
    if (word in d):
        d[word] += 1
    else:
        d[word] = 1

d = sorted(d.items(), key = lambda x : x[0])
d = sorted(d, key = lambda x : len(x[0]), reverse=True)
d = sorted(d, key = lambda x : x[1], reverse=True)

for i in d:
    print(i[0])
728x90
반응형