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 |