BOJ - 14248

주의·2024년 1월 7일
0

boj

목록 보기
57/214

백준 문제 링크
점프 점프

❓접근법

  1. BFS를 사용했다.
  2. 방문 처리할 변수 visited와 가능한 돌을 저장할 answer 변수를 만들었다.
  3. 갈 수 있는 범위는
    현재 위치의 값(v) + graph[v]
    현재 위치의 값(v) - graph[v] 이렇게 2 가지이다.
  4. 범위는 0 <= i < N으로 정해주고, 방문 처리를 해준다.
    방문할 수 있다면 answer[i] = 1로 정해준다.
  5. bfs(start)를 실행하고, answer에서 1의 개수를 구하면 끝!

👌🏻코드

from collections import deque
N = int(input())

graph = list(map(int, input().split()))

start = int(input())

answer = [0] * (N+1)
visited = [False] * (N+1)

def bfs(x):
    queue = deque()
    queue.append(x)
    
    answer[x] = 1
    visited[x] = True
    
    while queue:
        v = queue.popleft()
        
        for i in (v + graph[v], v - graph[v]):
            if 0 <= i < N and not visited[i]:
                visited[i] = True
                answer[i] = 1
                queue.append(i)
           
bfs(start-1) # graph는 길이가 5인 리스트이므로 인덱스 - 1
print(answer.count(1))

0개의 댓글