티스토리 뷰

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

 

11048번: 이동하기

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

www.acmicpc.net

 

 

 

memo[i][j] 는 (i,j)까지 이동했을 때 얻을 수 있는 사탕의 최대 개수

조건식

memo[i][j] = max(memo[i][j - 1], memo[i - 1][j], memo[i - 1][j - 1]) + (i,j)에 있는 사탕의 개수


초기값
memo[n][m] = 0;  (0<=n<=N , 0<=m<=M)

 

 

const input = require('fs')
	.readFileSync('./dev/stdin')
	.toString()
	.trim()
	.split('\n')
	.map((v) => v.split(' ').map(Number));
const [N, M] = input.shift();

let memo = Array.from(Array(N + 1), () => Array(M + 1).fill(0));

for (let i = 1; i <= N; i++) {
	for (let j = 1; j <= M; j++) {
		memo[i][j] = Math.max(memo[i][j - 1], memo[i - 1][j], memo[i - 1][j - 1]) + input[i - 1][j - 1];
	}
}

console.log(memo[N][M]);
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함