본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 16173번 점프왕 쩰리 (Small)

by 현장 2021. 12. 31.

-코드

from collections import deque


def bfs(x, y):
    queue = deque([[x, y]])
    while queue:
        x, y = queue.popleft()
        if arr[x][y] == -1:
            return True
        for i in range(2):
            X, Y = x + (i * arr[x][y]), y + ((1 - i) * arr[x][y])
            if 0 <= X < n and 0 <= Y < n and not visited[X][Y]:
                visited[X][Y] = True
                queue.append([X, Y])
    return False


n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
visited = [[False] * n for _ in range(n)]

if bfs(0, 0):
    print('HaruHaru')
else:
    print('Hing')

처음에는 문제를 이해를 못 해서 읽다가 포기하고 다음에 다시 보니 이해가 되어서 해결을 하려고 기본 틀을 가지고 코딩을 하였으나 좌표로 되어있어서 처음이라 바로 막혔습니다. 그래서 이유를 알아보니 그냥 좌표를 큐에 넣어서 풀면 되는 것을 깨닫고 코딩을 했으나 큐에 [x, y]로 입력을 해서 오류가 나서 고쳐서 해결하고 for문 부분에서 오류가 나서 찾아보니 범위 문제여서 해결을 하였으나 너무 많이 참고를 해서 아쉬운 문제였습니다.