반응형
풀이
- 델타 탐색 중 아래와 오른쪽으로만 탐색하도록 하며,
- mtx의 di, dy의 값에 현재 위치 값을 더한 값이 범위 내에 있는지 확인
- 이후 가장 아래의 가장 오른쪽인 도착 지점에 위치했을 경우
- flag를 True로 변경 후 q에 남아있어도 while문 탈출하도록 하기
- 또한 visit를 활용해서 같은 위치를 재방문하지 않도록 해서 해결
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
mtx = [list(map(int,input().rstrip('\n').split())) for _ in range(n)]
visit = [[0]*n for _ in range(n)]
visit[0][0] = 1
q = deque([[0,0]])
flag = False
while q:
i,j = q.popleft()
val = mtx[i][j]
for di,dy in [[i+val,j],[i,j+val]]:
if 0<=di<n and 0<=dy<n and not visit[di][dy]:
if (di,dy) == (n-1,n-1):
flag = True
break
visit[di][dy] = 1
q.append([di,dy])
if flag: break
print('HaruHaru') if flag else print('Hing')
'알고리즘' 카테고리의 다른 글
[백준, 파이썬, 15650번] N과 M (2) (0) | 2023.09.13 |
---|---|
[백준, 파이썬, 5568번] 카드 놓기 (0) | 2023.09.13 |
[백준, 파이썬, 18311번] 왕복 (0) | 2023.09.12 |
[백준, 파이썬, 1032번] 명령 프롬프트 (0) | 2023.09.11 |
[백준, 파이썬, 16926번] 배열 돌리기 1 (0) | 2023.09.08 |