Skip to content

Latest commit

 

History

History
48 lines (39 loc) · 1.45 KB

16173.md

File metadata and controls

48 lines (39 loc) · 1.45 KB

백준 16173번 점프왕 쩰리(small)

image


코드 설명

  • 이차원 배열 내에서 좌표를 통해 상하좌우로 이동하고자 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")