BOJ - 16948

주의·2024년 1월 1일
0

boj

목록 보기
35/214

백준 문제 링크
데스 나이트

❓접근법

  1. BFS를 사용했다.
  2. dx와 dy를 6방향으로 설정해야한다.
  3. 처음 시작을 1로 한 후, 갈 수 있는 방향에 이전 숫자 + 1을 넣어주었다.
  4. 목표 지점에 도달하면 lst[x][y] - 1을 반환한다.
  5. 목표 지점에 도달하지 못하면 -1을 반환한다.

👌🏻코드

from collections import deque

N = int(input())
lst = [[0]* N for _ in range(N)]
start_x, start_y, end_x, end_y = map(int, input().split())

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


def bfs(x,y):
    queue = deque()
    queue.append((x,y))
    
    lst[y][x] = 1
    
    while queue:
        x,y = queue.popleft()
        
        if (x,y) == (end_x, end_y):
            return lst[y][x] - 1
        
        
        for d in range(6):
            nx = x + dx[d]
            ny = y + dy[d]
            
            if (0<=nx<N) and (0<=ny<N) and lst[ny][nx] == 0:
                lst[ny][nx] = lst[y][x] + 1
                queue.append((nx,ny))
                
    return -1

print(bfs(start_x, start_y))

0개의 댓글