COCI 2014 Contest 2의 2번 문제 Utrka 입니다.
본 포스트는 이해를 돕기 위해 문제를 간략하게만 정리하였으므로 상세 내용과 코드 제출은 아래 링크를 참고해 주세요.
COCI '14 Contest 2 #2 Utrka - DMOJ: Modern Online Judge
Numerous local and international recreational runners were eager to take part in this year's Zagreb Marathon! It is an already traditional race 42125 meters long. A curious statistical info is that this year every single contestant managed to complete the
dmoj.ca
문제 개요 설명
올해 마라톤에 정말 많은 마라토너들이 참가했습니다.
그런데 이 많은 마라토너들 중 완주하지 못한 사람이 딱 한명 있다고 하는데요.
이번 마라톤을 완주하지 못한 사람이 누구인지 알아내 주세요.
입력
- 입력의 첫번째 줄에는 총 마라톤 참가자의 수를 의미하는 정수 n이 주어집니다.
- 다음 n줄에는 참가자의 이름이 주어집니다.
- 그 다음에는 n-1 줄에 마라톤 레이스를 완료한 참가자의 이름이 순서대로 주어집니다.
- 참가자들 중에는 이름이 같은 참가자들도 존재할 수 있습니다.
출력
- 마라톤을 완주하지 못한 참가자의 이름을 출력합니다.
입출력 예시
입력 :
4
mislav
stanko
mislav
ana
stanko
ana
mislav
출력 :
mislav
입력에 따르면 4명의 마라토너가 마라톤에 참여하는데, 그들의 이름은 mislav, stanko, mislav, ana 입니다. (mislav라는 이름을 가진 동명이인이 2명 참가했습니다.)
그 중 마라톤을 완주한 사람은 stanko, ana, mislav 입니다. 따라서 이번 마라톤을 완주하지 못한 참가자는 mislav 입니다.
솔루션 코드
n = int(input())
contestant = {}
complete = {}
# 참가자 저장
for i in range(n):
marathoner = input()
if marathoner in contestant:
contestant[marathoner] += 1
else:
contestant[marathoner] = 1
# 완주자 저장
for i in range(n-1):
marathoner = input()
if marathoner in complete:
complete[marathoner] += 1
else:
complete[marathoner] = 1
# 완주하지 못한 사람 구하기
for k in complete.keys():
contestant[k] = contestant[k] - complete[k]
print(*[k for k in contestant.keys() if contestant[k] == 1])
딕셔너리를 이용해 참가자들의 명단과 명수, 완주자들의 명단과 명수를 저장합니다.
그리고 이를 이용하여 완주하지 못한 사람을 구해냅니다. 문제에 따르면 완주하지 못한 사람은 단 1명이므로, 명수가 0이 아니라 1인 경우 그 사람이 정답입니다.
'문제정리' 카테고리의 다른 글
USACO 2023 February Contest, Bronze Problem 1 Hungry Cow (0) | 2023.08.14 |
---|---|
USACO 2023 US Open Contest, Bronze Problem 1 FEB (0) | 2023.08.08 |
CCC '18 J3 - Are we there yet? (0) | 2023.07.18 |
DMOPC '19 Contest 5 P1 Conspicuous Cryptic Checklist (0) | 2023.07.11 |
DMOPC '19 Contest 3 P1 - Mode Finding (0) | 2023.07.05 |