백준 온라인저지 점프왕 쩰리(small)
문제풀러 바로가기👇👇👇👇👇👇
문제풀이
from collections import deque
n = int(input())
graph = []
for i in range(n):
graph.append(list(map(int, input().split())))
dx = [1, 0]
dy = [0, 1]
def bfs(x, y):
queue = deque()
queue.append((x, y))
visit = [[False]*n for _ in range(n)]
while queue:
x, y = queue.popleft()
move = graph[x][y]
if move == -1:
return True
for i in range(2):
nx = x + dx[i]*move
ny = y + dy[i] * move
if 0 <= nx < n and 0 <= ny < n:
if not visit[nx][ny]:
visit[nx][ny] = True
queue.append((nx, ny))
if bfs(0, 0):
print("HaruHaru")
else:
print("Hing")
- bfs(너비 우선 탐색)을 사용한다.
- 큐를 이용해서 최종목적지 도달할 수 있는지 경로를 탐색해본다.
- 문제에서 오른쪽과 아래로만 이동할 수 있다고 명시되어 있기 때문에 이동 방법은 단 2가지이다.