이번 문제는 깊이우선탐색을 통해 해결하였다. 2가지 방향을 리스트로 관리하고 현재 위치의 값을 방향값에 곱하여 범위 내에 들어갈 수 있다면 재귀 호출을 하는 방식으로 접근하였고 쉽게 해결하였다.
board[y][x]
를 저장한다.board[y][x]
를 0으로 갱신한다.y+(dy[i]*tmp)
로 저장한다.x+(dx[i]*tmp)
로 저장한다.board[ny][nx]
가 0이 아닐 경우, dfs(ny, nx)
를 재귀호출한다.dfs(0, 0)
을 호출한다.def dfs(y, x):
global answer
tmp=board[y][x]
board[y][x]=0
dy=[0, 1]
dx=[1, 0]
if y==n-1 and x==n-1:
answer='HaruHaru'
return
for i in range(2):
ny=y+(dy[i]*tmp)
nx=x+(dx[i]*tmp)
if ny>=0 and nx>=0 and ny<n and nx<n and board[ny][nx]!=0:
dfs(ny, nx)
n=int(input())
board=[]
for _ in range(n):
board.append(list(map(int, input().split())))
answer='Hing'
dfs(0, 0)
print(answer)