- 이차원 배열 내에서 좌표를 통해 상하좌우로 이동하고자 dx, dy 테크닉을 사용했다. -> dx, dy = [-1,1,0,0], [0,0,-1,1] # 상하좌우
- dfs 함수를 만들어서 해결했으며, deque를 사용해 방문한 좌표를 확인했다. -> deque에서 popleft 함수 이용
- visit 의 이름을 가진 이차원 배열을 만들어 방문한 곳과 방문하지 않은 곳을 각각 1, 0으로 표시해 구분했다.
- 메모리 : 32404 KB
- 시간 : 88 ms
from collections import deque
def in_range(x,y):
return x >= 0 and x < n and y >= 0 and y < n
def dfs(x,y):
visit = [[0]*n for _ in range(n)]
q = deque()
q.append([x,y])
while q:
x, y = q.popleft()
for dx, dy in zip(dxs, dys):
nx, ny = x + dx*matrix[x][y], y + dy*matrix[x][y]
if in_range(nx,ny) and visit[nx][ny] == 0:
q.append([nx,ny])
visit[nx][ny] = 1
if matrix[x][y] == -1:
return True
return False
n = int(input())
matrix = [list(map(int, input().split())) for _ in range(n)]
x, y = 0, 0
dxs, dys = [0, 1, 0, -1], [1, 0, -1, 0]
if dfs(x,y):
print("HaruHaru")
else:
print("Hing")