[백준 7562번/실버1] 나이트의 이동 (bfs/파이썬)

밀루·2023년 3월 29일
0

백준 문제풀이

목록 보기
11/51

https://www.acmicpc.net/submit/7562/58393966

from collections import deque
import sys

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

def bfs(x, y):
    q = deque()
    q.append((x, y))
    
    if x == goalx and y == goaly:
        print(0) # 이거 처음에 1로 뒀다가 디버깅하는데 한참 시간쏟음
        return 0

    while q:
        cx, cy = q.popleft()
        if not visited[cx][cy]:
            visited[cx][cy] = True
            for i in range(8):
                nx = cx+dx[i]
                ny = cy+dy[i]
                if 0 <= nx < n and 0 <= ny < n and not visited[nx][ny]:
                    graph[nx][ny] = graph[cx][cy] + 1
                    q.append((nx, ny))
                    if nx == goalx and ny == goaly:
                        print(graph[nx][ny])
                        return graph[nx][ny]

    return "impossible"

if __name__ == "__main__":
    t = int(input())
    for _ in range(t):
        n = int(input())
        visited = [[False for _ in range(n)] for _ in range(n)]
        graph = [[-1 for _ in range(n)] for _ in range(n)]
        if _ in range(t):
            # 테스트 케이스
            x, y = map(int, input().split())
            goalx, goaly = map(int, input().split())
            graph[x][y] = 0
            bfs(x, y)

특이점:

내 힘으로 다풀었다!
그것도 30분만에
그런데 아무 생각없이 넣은 코드 하나에서 디버깅하는데 오래걸렸다.
덜렁거리는 습관 좀 고쳐야할듯.

profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글