[백준/파이썬] 7562번

민정·2023년 12월 27일
0

[백준/파이썬]

목록 보기
207/245
post-thumbnail

📍백준 7562번 문제

https://www.acmicpc.net/problem/7562

코드

import sys
from collections import deque
input = sys.stdin.readline

dx = [2, 2, -2, -2, -1, -1, 1, 1]
dy = [-1, 1, -1, 1, 2, -2, 2, -2]


def bfs(a, b, m, n):
    que = deque()
    visited[a][b] = 0
    que.append((a, b))
    while que:
        x, y = que.popleft()
        if x == m and y == n:
            print(visited[x][y])
            break
        for i in range(8):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < num and 0 <= ny < num and visited[nx][ny] == -1:
                visited[nx][ny] = visited[x][y] + 1
                que.append((nx, ny))


testCase = int(input())

for _ in range(testCase):
    num = int(input())
    cnt = 0
    a, b = map(int, input().split())
    m, n = map(int, input().split())
    visited = [[-1 for _ in range(num)]for _ in range(num)]

    bfs(a, b, m, n)

풀이

  • 이동할 수 있는 좌표가 (1,2)(-1,2)(1,-2)(-1,-2)(2,-1)(-2,-1)(2,1)(-2,1) 총 8개 이므로 각각을 dx dy로 완성한다.
  • 방문하지 않은 노드라면 (visited[nx][ny] == -1) 이전 노드 값에 1을 더해 현재 노드에 값을 넣어준다.
profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글