백준 문제 링크
점프왕 쩰리 (Small)
- BFS를 사용했다.
- 문제에서 다음의 조건에 유의하자.
- ‘쩰리’가 이동 가능한 방향은 오른쪽과 아래 뿐
- ‘쩰리’가 한 번에 이동할 수 있는 칸의 수는, 현재 밟고 있는 칸에 쓰여 있는 수 만큼이다.
- while문 안에서 dx와 dy를 현재 밟고 있는 칸에 있는 수로 설정했다.
- 방문 처리를 하고
queue에는 새로운 좌표와 새로운 좌표 값의 칸에 있는 수를 같이 넣어줬다.- visited의 도착 지점이 False이면 Hing,
True이면 HaruHaru를 출력하면 끝!
from collections import deque
N = int(input())
graph = []
for _ in range(N):
graph.append(list(map(int, input().split())))
start_x, start_y = 0,0
end_x, end_y = N-1, N-1
visited = [[False] * N for _ in range(N)]
def bfs(x,y):
queue = deque()
queue.append((x,y,graph[x][y]))
visited[x][y] = True
while queue:
x,y,graph[x][y] = queue.popleft()
dx = [0,graph[x][y]]
dy = [graph[x][y],0]
if (x,y) == (end_x, end_y):
break
for d in range(2):
nx = x + dx[d]
ny = y + dy[d]
if (0<=nx<N) and (0<=ny<N) and not visited[nx][ny] :
visited[nx][ny] = True
queue.append((nx,ny,graph[nx][ny]))
bfs(start_x, start_y)
if visited[N-1][N-1] == False:
print('Hing')
else:
print('HaruHaru')