본문 바로가기

BOJ/다이나믹 프로그래밍

BOJ : 11048 이동하기 (JS)

728x90

소스코드

let fs = require('fs');
const filePath = process.platform === `linux` ? `/dev/stdin` : `예제.txt`; 
let input = fs.readFileSync(filePath).toString().split('\n');
const c = console.log

let nm = input[0].split(' ')
let n = Number(nm[0])
let m = Number(nm[1])

let inputsLst = []

for(let i = 1 ; i < n+1 ; i++){
    let inputs = input[i].split(' ').map(Number)
    inputsLst.push(inputs)
}

let dp = []

for(let i = 0 ; i < n+1 ; i++){
    dp[i] = []
    for(let j = 0 ; j < m+1 ; j++){
        dp[i][j] = 0
    }
}

for (let i = 0 ; i < n ; i++){
    for(let j = 0 ; j < m ; j++){
        dp[i+1][j+1] = inputsLst[i][j]
    }
}


for(let i = 1 ; i < n+1 ; i++){
    for(let j = 1 ; j < m+1 ; j++){
        dp[i][j] = Math.max(dp[i-1][j] + dp[i][j], dp[i][j-1]+ dp[i][j])
    }
}

c(dp[n][m])

 

풀이

깊이우선탐색했을때 풀었던 문제랑 비슷한 유형을 가지고있는것 같아 옛날에 했었던 기억을 더듬어 한 칸씩 이동할때마다 max값을 갱신해주면서 가게 되고 도착지점에 도착했을때 제일 큰 수 니까 그것을 출력을 했는데 맞았다!!

 

문제

https://www.acmicpc.net/problem/11048

 

11048번: 이동하기

준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는

www.acmicpc.net

 

728x90

'BOJ > 다이나믹 프로그래밍' 카테고리의 다른 글

BOJ : 2565 전깃줄(JS)  (0) 2023.01.15
BOJ : 14606 피자 (JS)  (0) 2023.01.15
BOJ : 12865 평범한 배낭 (JS)  (0) 2023.01.09
BOJ : 9625 BABBA (JS)  (0) 2023.01.07
BOJ : 11057 오르막수 (JS)  (0) 2023.01.07