CodingTest/Baekjoon

[baekjoon] 백준 17204번(파이썬): 죽음의 게임

JunJangE 2021. 8. 27. 12:28

문제

 

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