본문 바로가기
  • 안녕하세요,,, 안녕히가세요,,,,
프로그램/코딩테스트

백준 7562 나이트의 이동

by 차보루타 2022. 6. 13.

 

from collections import deque

dy = (1, 1, -1, -1, 2, 2, -2, -2)
dx = (2, -2, 2, -2, 1, -1, 1, -1)

N = 0


def err(ex, ey):
    return 0 <= ex < N and 0 <= ey < N


for _ in range(int(input())):
    N = int(input())

    dq = deque()

#    board = [[False for _ in range(N)] for _ in range(N)]
    check_board = [[False for _ in range(N)] for _ in range(N)]

    start_x, start_y = map(int, input().split())
    end_x, end_y = map(int, input().split())

    dq.append((start_x, start_y, 0))
#    board[end_x - 1][end_y - 1] = True
    check_board[start_x][start_y] = True

    while dq:
        x, y, d = dq.popleft()

        if x == end_x and y == end_y:
            print(d)
            break

        for i in range(8):
            nx = x + dx[i]
            ny = y + dy[i]
            nd = d + 1

            if err(nx, ny) and not check_board[nx][ny]:
                check_board[nx][ny] = True
                dq.append((nx, ny, nd))

 

BFS를 이용해 해결했다.

 

좌표만 1칸씩에서 나이트 이동 좌표로 변경해주고 해결했다.

 

'프로그램 > 코딩테스트' 카테고리의 다른 글

삼성 Expert 1244 최대 상금  (0) 2022.06.13
삼성 Expert 1208 Flatten  (0) 2022.06.13
백준 1743 음식물 피하기  (0) 2022.06.13
백준 1987 알파벳  (0) 2022.06.13
백준 2178 미로 탐색  (0) 2022.06.13

댓글