14248 점프 점프

정민용·2023년 2월 9일

백준

목록 보기
27/286

문제

영우는 개구리다 개굴개굴개굴

영우는 지금 n개의 돌이 일렬로 놓여있는 돌다리에 있다. 그리고 돌다리의 돌에는 숫자가 하나씩 적혀있다. 영우는 이 숫자가 적혀있는 만큼 왼쪽이나 오른쪽으로 점프할 수 있는데, 이때 돌다리 밖으로 나갈 수는 없다.

영우는 이 돌다리에서 자기가 방문 가능한 돌들의 개수를 알고 싶어한다. 방문 가능하다는 것은 현재위치에서 다른 돌을 적절히 밟아 해당하는 위치로 이동이 가능하다는 뜻이다.

현재 위치가 주어졌을 때, 영우가 방문 가능한 돌들의 개수를 출력하시오.

import sys

input = lambda: sys.stdin.readline().strip()

from collections import deque

n = int(input())
graph = list(map(int, input().split()))
a = int(input()) - 1
visited = [False] * n


def bfs(a):
  queue = deque()
  queue.append(a)
  while queue:
    a = queue.popleft()
    visited[a] = True
    if 0 <= a + graph[a] < n and visited[a + graph[a]] == False:
      queue.append(a + graph[a])
      visited[a + graph[a]] = True
    # 개구리가 오른쪽으로 점프하는 경우
    if 0 <= a - graph[a] < n and visited[a - graph[a]] == False:
      queue.append(a - graph[a])
      visited[a - graph[a]] = True
    # 개구리가 왼쪽으로 점프하는 경우


bfs(a)

count = 0
for v in visited:
  if v == True:
    count += 1

print(count)

백준 14248 점프 점프

0개의 댓글