📌 구해야 하는 정답

한 사람이 다른 사람을 지목합니다.

0번 사람부터 시작하여, 그 사람이 지목한 사람이 숫자를 외칩니다 (0 → 1 → 2 ..)

이렇게 지목한 사람이 숫자를 외쳐나가는 중, 숫자 M과 일치하면 벌주를 마신다고 합니다.

보성이가 벌주를 마시게 하기 위해 불러야 하는 숫자 M값을 구하는 문제입니다.

보성이의 위치(K)를 만나지 못한다면 -1를 출력합니다.


📌 풀이 하기

1️⃣ 그래프 탐색하기

이 문제에서 주어지는 입력을 그래프로 생각하고 입력받습니다.

사람 ( 0 ~ N-1)은 정점, 사람이 가르키는 다음 사람 정보는 간선으로 생각하고 문제를 풀이하겠습니다.

for _ in range(N):
    arr.append(int(sys.stdin.readline()))

그래서 이렇게 정점과 이어진 다음 정점을 순서대로 기록해 둡니다.

그 다음으로 이 문제를 풀기 위해서는 한 사람이 지목한 다음 사람을 구하는 탐색 과정을 구현해야 합니다.

이 과정에서 한 사람 → 다음 사람으로 한 간선을 넘어가는 개수를 체크해야 합니다.

이렇게 한 사람에서 다음사람으로 넘어가는 간선의 개수를 구해나가다가,

탐색중인 사람이 보성이(K)가 될 때 탐색을 종료합니다.