문제
https://programmers.co.kr/learn/courses/30/lessons/67259?language=python3
코드
from collections import deque
import sys
INF=sys.maxsize
def solution(board):
def bfs(dire,cost,r,c):
dx=[-1,1,0,0]
dy=[0,0,-1,1]
table=[[INF]*len(board) for _ in range(len(board))]
queue=deque()
queue.append((dire,cost,r,c))
while queue:
d,cost,r,c=queue.popleft()
for i in range(4):
nx=r+dx[i]
ny=c+dy[i]
if d!=i:
n_cost=cost+600
else:
n_cost=cost+100
if 0<=nx<len(board) and 0<=ny<len(board) and board[nx][ny]!=1 and table[nx][ny]>n_cost:
table[nx][ny]=n_cost
queue.append((i,n_cost,nx,ny))
return table[-1][-1]
return min(bfs(3,0,0,0),bfs(1,0,0,0))
'문제풀이 > DFS & BFS' 카테고리의 다른 글
[파이썬] [BFS] 백준 3055 탈출 (0) | 2022.03.23 |
---|---|
[파이썬] [DFS] 백준 2667 단지번호붙이기 (0) | 2022.03.01 |
[파이썬] [DFS] Pro 여행경로 (0) | 2022.02.19 |
[파이썬] [BFS] Pro 단어 변환 (0) | 2022.02.18 |
[파이썬] [DFS] 백준 3109 빵집 (0) | 2022.02.13 |