codecata Day3
Algorithm๐คฎ
๋ฌธ์ ์ ์๋๋ N x M ์ ๊ทธ๋ฆฌ๋๋ฉด N๋ฒ์ ์ค๋ฅธ์ชฝ์ด๋ M๋ฒ์ ์๋์ชฝ์ด๋์ ์ต์๊ฐ์ ์ํ๋๊ฒ์ด์ง๋ง
๋๋ ์ด๋ป๊ฒ ๊ฐ๋ ์ต์๊ฐ์ด ๋์ค๊ฒ๋ง ์ด๋ํ๋ ๊ฒ์ผ๋ก ์ดํดํ๋ค.
[1,9,9,1,1,1,1]
[1,1,1,1,1,9,1]
[1,9,9,9,9,1,1]
[1,9,9,1,1,1,1]
์ด๋ฌํ ๋ฐฐ์ด์ 1์ ๊ฐ์ผ๋ก๋ง ์ด๋ํ์ฌ 12์ ๊ฐ์ด ๋์์ผํ๋ค๊ณ ์๊ฐํ์ง๋ง
๋ฌธ์ ์์ ์ํ๋๊ฐ์ 7๋ฒ์ ์ค๋ฅธ์ชฝ์ด๋ 4๋ฒ์ ์๋์ชฝ์ด๋์ผ๋ก ์ต์๊ฐ 18์ด ์ ๋ต์ด์๋ค.
const minPathSum = (grid) => {
for (let i = 1; i < grid.length; i++) {
grid[i][0] += grid[i - 1][0];
}
for (let i = 1; i < grid[0].length; i++) {
grid[0][i] += grid[0][i - 1];
}
for (let i = 1; i < grid.length; i++) {
for (let j = 1; j < grid[0].length; j++) {
grid[i][j] += Math.min(grid[i][j - 1], grid[i - 1][j]);
}
}
return grid[grid.length - 1][grid[0].length - 1];
};
์ฝ๋ํด์ค
1๋ฒ์งธ for๋ฌธ ๊ฐ ์ธ๋ฑ์ค์ 0๋ฒ์งธ ๊ฐ์ ์ค์ฒฉํ์ฌ ๋๊น์ง ๊ณ์ฐํ๋ค.
2๋ฒ์งธ for๋ฌธ 0๋ฒ์งธ์ธ๋ฑ์ค ๊ฐ๋ก์ด์ ๊ฐ์ ์ค์ฒฉํ์ฌ ๋๊น์ง ๊ณ์ฐํ๋ค.
3๋ฒ์งธ for๋ฌธ (1,2) (1,3)โฆ.(3,1) (3,2)โฆ. (N,M)๊น์ง ํด๋น ์ธ๋ฑ์ค์ ์์ชฝ ์ผ์ชฝ๊ฐ์ค ์์๊ฐ์ ๋ํ์ฌ ์ค์ฒฉํ๋ค.
๋~~~~