https://www.acmicpc.net/submit/7562/55594757
1. 내가 작성한 코드
기존 문제들은 dx, dy가 동, 서, 남, 북 네 방향으로만 이동할 수 있는데,
이 문제는 각기 다른 8개의 방향으로 이동할 수 있다는 점을 제외하면
미로찾기와 동일한 문제이다.
from collections import deque
t = int(input()) #테스트 케이스 횟수
def bfs():
#이동할 수 있는 좌표
dx = [2,2,1,1,-2,-2,-1,-1]
dy = [-1,1,-2,2,-1,1,-2,2]
queue = deque()
queue.append((start_x,start_y))
maps[start_x][start_y]= 1
while queue:
x,y = queue.popleft()
if x == end_x and y == end_y:
print(maps[x][y]-1)
return
for i in range(8):
nx = x+dx[i]
ny = y+dy[i]
if nx<0 or ny<0 or nx>=n or ny>=n:
continue
if maps[nx][ny] == 0:
maps[nx][ny] = maps[x][y] + 1
queue.append((nx,ny))
for _ in range(t):
n = int(input()) #체스판 한 변의 길이
maps = [[0]*n for _ in range(n)]
start_x,start_y = map(int,input().split())
end_x,end_y = map(int, input().split())
bfs()
이제 실버 단계에 있는 dfs/bfs 는 약간 감을 잡은 것 같다
그래프 감 잡은 줄 알았는데 이번엔 DP 등장 ㅠㅠ 넘나리 어려운 것
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 2644번 촌수계산(python) (0) | 2023.02.11 |
---|---|
[백준] 1946번 신입 사원(python) (0) | 2023.02.11 |
[백준] 24416번 알고리즘 수업 - 피보나치 수 1(python) (0) | 2023.02.09 |
[백준] 1012번 유기농 배추(with python) (0) | 2023.02.08 |
[백준] 24444번 너비 우선 탐색 1(with python) (0) | 2023.02.08 |
댓글