일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 알고리즘 문제풀이
- 신호처리
- 이산신호처리
- Leet Coding Challenge
- 스위프트
- 독서노트
- 릿코드
- IOS
- leetcode
- 알고리즘문제풀이
- DSP
- 트라이
- backjoon
- 전자공학
- 알고리즘
- 코딩테스트
- SWIFTUI
- 프로그래머스
- 컨볼루션
- 파이썬
- 코테
- SWIFT
- PYTHON
- dft
- 코테준비
- leet code
- 백준
- DTFT
- 카카오 코딩테스트
- Trie
Archives
- Today
- Total
매일 매일 성장하는 섭섭군
[Seop's의 코드풀이] 백준 10546 배부른 마라토너 - Python 본문
반응형
이번에 풀어볼 문제는 백준 10546번인 배부른 마라토너 라는 문제입니다.
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/10546
본 문제에서 가장 주의깊게 살펴 봐야 하는 것은 동명이인이 존재 할 수 있다는 것 입니다.
만약 모든 사람의 이름이 다르다면 배열이나 딕셔너리에 없다면 그 이름이 정답일 것 입니다.
저는 동명이인 문제를 다음과 같이 해결했습니다.
1. 참가한 사람들의 dict를 생성하고 적재한다. 적재하는 방식은 다음과 같다.
Key : 참가자 이름
Value : 1
2. 만약 동일한 이름의 참가자가 있다면 Value 값을 1 증가시키니다.
3. 완주한 사람들 역시 참가한 사람들과 같은 방식으로 dict를 생성하고 적재한다.
4. 참가한 사람들의 key로 탐색을 진행한다.
5. 만약 완주한 사람의 dict에 key가 존재하지 않는다면 해당 key가 정답이다.
6. 만약 완주한 사람의 valued와 참가한 사람의 Value가 다르다면 해당 key가 정답니다.
위와 같은 방식으로 문제를 해결하였고 전체 코드는 다음과 같습니다.
질문과 피드백은 언제나 감사드립니다.
import sys
input = sys.stdin.readline
N = int(input())
# person : 참가한 사람들의 dict
# finish : 완주한 사람들의 dict
person = dict()
finish = dict()
answer = ""
for _ in range(N) :
name = input().rstrip()
if name in person :
person[name] += 1
else :
person[name] = 1
for _ in range(N-1) :
name = input().rstrip()
if name in finish :
finish[name] += 1
else :
finish[name] = 1
for n in person.keys() :
# 참가자에는 있지만 완주자에는 없다면 해당 키가 정답
if n not in finish :
answer = n
break
else :
# 참가자의 value와 완주자의 value가 다르다면 해당 키가 정답
if person[n] != finish[n] :
answer = n
break
print(answer)
반응형
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[Seop's의 코드풀이] 백준 2910 빈도정렬 - Python (0) | 2020.05.18 |
---|---|
[Seop's의 코드풀이] 백준 1713번 후보 추천하기 - Python (0) | 2020.05.14 |
[Seop's의 코드풀이] 백준 9933 민균이의 비밀번호 - Python (0) | 2020.05.12 |
[Seop's의 코드풀이] 백준 18405번 경쟁적 전염 - Python (0) | 2020.05.06 |
[Seop's의 코드풀이] 백준 7562 나이트의 이동 - Python (0) | 2020.05.01 |
Comments