BOJ - 11558

주의·2024년 2월 7일
0

boj

목록 보기
196/214
post-thumbnail

백준 문제 링크
The Game of Death

❓접근법

  1. BFS를 사용했다.
  2. graph와 visited를 만들고,
    최소 숫자를 저장할 cnt = 0 을 만들어준다.
  3. bfs 함수 내에서,
    cnt를 전역변수화 하고,
    큐가 비어있을 때까지 큐에서 원소를 뽑을 때,
  • 그 원소가 N과 같다면 cnt를 return 한다.
  • 자식 노드를 아직 방문하지 않았다면 방문처리하고,
    큐에 자식 노드를 넣고, cnt += 1 해준다.
  1. bfs(1)로 함수를 실행하고,
  • visited[N] == True 이면 print(cnt)
  • visited[N] == False 이면 print(0)

👌🏻코드

from collections import deque

t = int(input())

for _ in range(t):
    
    n = int(input())

    start = 1

    graph = [[] for _ in range(n + 1)]
    visited = [False] * (n + 1)

    for i in range(1, n + 1):
        a = int(input())
        graph[i].append(a)

        
    cnt = 0
    def bfs(x):
        global cnt
        queue = deque()
        queue.append(x)

        visited[x] = True
        while queue:
            v = queue.popleft()

            if v == n:
                return cnt

            for i in graph[v]:
                if not visited[i]:
                    visited[i] = True
                    queue.append(i)
                    cnt += 1

    bfs(1)
    
    if visited[n] == True:
        print(cnt)

    else:
        print(0)

0개의 댓글