[백준/Python] 11060 점프 점프

2.so_j·2023년 7월 27일

문제는 여기

코드

from collections import deque
import sys
input = sys.stdin.readline

n = int(input())
num = list(map(int, input().split()))
visited = [False] * n

def bfs(i):
    queue = deque()
    queue.append((i, 0))

    while queue:
        i, cnt = queue.popleft() # 위치 (몇번째인지)
        if i == n - 1:
            return cnt

        for j in range(num[i], 0, -1):
            if 0 <= j + i < n and not visited[j+i]:
                if num[j+i] == 0:
                    continue
                queue.append((j + i, cnt + 1))
                visited[j+i] = True
    return -1

print(bfs(0))

기록할 점

  • 처음에 방문처리를 안해주어서 메모리 초과가 났었다. 잊지 않고 해주기
  • i번째 칸에 쓰여 있는 수를 Ai라고 하는데, Ai에 0이 써있다면 더 이상 이동하지 못하기 때문에 이 경우는 스킵해주었다


거의 3주간 bfs만 풀었더니 이제 bfs 실버는 진짜 풀만한 것 같다. 끄읏

profile
싱글코어 두뇌의 개발자 도전기

0개의 댓글