728x90
반응형
문제
마라토너라면 국적과 나이를 불문하고 누구나 참가하고 싶어하는 백준 마라톤 대회가 열린다. 42.195km를 달리는 이 마라톤은 모두가 참가하고 싶어했던 만큼 매년 모두가 완주해왔다. 단, 한 명만 빼고!
모두가 참가하고 싶어서 안달인데 이런 백준 마라톤 대회에 참가해 놓고 완주하지 못한 배부른 참가자 한 명은 누굴까?
입력
첫째 줄에는 참가자 수 N이 주어진다. (1 ≤ N ≤ 105)
N개의 줄에는 참가자의 이름이 주어진다.
추가적으로 주어지는 N-1개의 줄에는 완주한 참가자의 이름이 쓰여져 있다.
참가자들의 이름은 길이가 1보다 크거나 같고, 20보다 작거나 같은 문자열이고, 알파벳 소문자로만 이루어져 있다.
참가자들 중엔 동명이인이 있을 수도 있다.
출력
마라톤을 완주하지 못한 참가자의 이름을 출력한다.
예제 입력 1
3
leo
kiki
eden
eden
kiki
예제 출력 1
leo
예제 입력 2
5
marina
josipa
nikola
vinko
filipa
josipa
filipa
marina
nikola
예제 출력 2
vinko
✔️ Code
import sys
from collections import defaultdict
input = sys.stdin.readline
name_list = defaultdict(int)
n = int(input())
for _ in range(n):
name = input().rstrip()
name_list[name] += 1
for _ in range(n-1):
name = input().rstrip()
if name in name_list:
name_list[name] -= 1
for name in name_list:
if name_list[name] == 1:
print(name)
✏️ Comment
- defaultdic 을 사용해서 값을 0으로 초기화시킨 dictionary를 생성한다.
- 참가자들의 이름을 입력받을 때마다 값을 1씩 올려준다.
- 완주한 참가자들의 이름을 입력받을 때마다 해당 참가자의 값을 -1 한다.
- 최종적으로 name_list dictionary 를 봤을 때 값이 0이 아니라 1이라면 완주하지 못한 참가자라는 뜻이므로 해당 참가자의 이름을 출력한다.
딕셔너리를 사용해서 간단하게 풀 수 있는 문제였다. 근데 코드가 좀 지저분한 면이 있는 것 같아서 다른 사람들의 풀이를 좀 참고해서 깔끔하게 풀 수 있는 방법을 확인해봐야겠다.
728x90
반응형
'백준 > 자료구조' 카테고리의 다른 글
[백준] #9375 패션왕 신해빈 (python) (0) | 2022.06.20 |
---|---|
[백준] #1302 베스트셀러 (python) (0) | 2022.05.25 |
[백준] #4358 생태학 (python) (0) | 2022.05.23 |
[백준] #2776 암기왕 (python) (0) | 2022.05.20 |
[백준] #2075 N번째 큰 수 (python) (0) | 2022.05.19 |
댓글