practivceAlgorithm/백준

[백준][Python] 11048 이동하기

findTheValue 2021. 7. 24. 12:51

그냥 문제 나온대로 읽고 BFS만들어서 풀었다.

더 좋은 방법이 있을지도..

import sys
input = sys.stdin.readline
from collections import deque

def BFS(i,j):
    candy_max = 0
    queue = deque()
    queue.append([i,j])
    visited_candy = [[-1 for _ in range(M)] for _ in range(N)]
    visited_candy[i][j] = maze[i][j]
    while queue:
        x,y = queue.popleft()
        if x==N-1 and y==M-1:
            if visited_candy[x][y] > candy_max:
                candy_max = visited_candy[x][y]
        for nx,ny in [(x+1,y),(x,y+1),(x+1,y+1)]:
            if 0<=nx<N and 0<=ny<M and visited_candy[x][y] + maze[nx][ny] > visited_candy[nx][ny]:
                visited_candy[nx][ny] = visited_candy[x][y] + maze[nx][ny]
                queue.append([nx,ny])
    else:
        return candy_max

N,M = map(int,input().split())
maze = [list(map(int,input().split())) for _ in range(N)]

print(BFS(0,0))