문제
17204번: 죽음의 게임
중앙대학교 소프트웨어대학 새내기들을 맞이하게 된 17학번 김영기는 두 학번이라는 차이를 극복하기 위해 새내기들과 친해지려고 노력하고 있다. 그 노력 중 하나는 바로 새내기들과의 술자
www.acmicpc.net
알고리즘
- bfs 탐색을 통해 문제를 수행한다.
- 사람의 수만큼 반복하여 탐색한다.
- 탐색하는 번호가 보성이의 번호이면 현재 지목 횟수를 리턴 받는다.
- 사람 수만큼 지목이 끝난 후에도 보성이의 번호를 탐색하지 못했다면 -1을 리턴 받는다.
코드
import sys
from collections import deque
# bfs 탐색
def bfs(v):
queue = deque([v])
cnt = 0
# 사람의 수만큼 반복하여 지목한 사람을 확인
for _ in range(n):
target = queue.popleft()
cnt += 1 # 지목 횟수 카운트
# 지목한 사람이 보성이의 번호이면 지목 횟수를 리턴
if graph[target] == k:
return cnt
# 지목한 번호를 다시 큐에 추가하여 반복
queue.append(graph[target])
# 사람 수만큼 지목이 끝난 후에도 보성이의 번호가 아니면 -1 리턴
return -1
n, k = map(int, sys.stdin.readline().split())
graph = [int(sys.stdin.readline()) for _ in range(n)]
# 0번부터 지목
print(bfs(0))
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1245번(파이썬): 농장 관리 (0) | 2021.08.29 |
---|---|
[baekjoon] 백준 2823번(파이썬): 유턴 싫어 (0) | 2021.08.28 |
[baekjoon] 백준 14496번(파이썬): 그대, 그머가 되어 (0) | 2021.08.26 |
[baekjoon] 백준 11123번(파이썬): 양 한마리... 양 두마리... (0) | 2021.08.25 |
[baekjoon] 백준 2251번(파이썬): 물통 (0) | 2021.08.24 |