백준 문제 링크
점프 점프
- BFS를 사용했다.
- 방문 처리할 변수 visited와 가능한 돌을 저장할 answer 변수를 만들었다.
- 갈 수 있는 범위는
현재 위치의 값(v) + graph[v]
현재 위치의 값(v) - graph[v] 이렇게 2 가지이다.- 범위는 0 <= i < N으로 정해주고, 방문 처리를 해준다.
방문할 수 있다면 answer[i] = 1로 정해준다.- 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))