๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ๋•…๋”ฐ๋จน๊ธฐ (12913)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋•…๋”ฐ๋จน๊ธฐ

๋•…๋”ฐ๋จน๊ธฐ ๊ฒŒ์ž„์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋•…๋”ฐ๋จน๊ธฐ ๊ฒŒ์ž„์˜ ๋•…(land)์€ ์ด Nํ–‰ 4์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๋ชจ๋“  ์นธ์—๋Š” ์ ์ˆ˜๊ฐ€ ์“ฐ์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค. 1ํ–‰๋ถ€ํ„ฐ ๋•…์„ ๋ฐŸ์œผ๋ฉฐ ํ•œ ํ–‰์”ฉ ๋‚ด๋ ค์˜ฌ ๋•Œ, ๊ฐ ํ–‰์˜ 4์นธ ์ค‘ ํ•œ ์นธ๋งŒ ๋ฐŸ

programmers.co.kr

 

Nํ–‰ 4์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง€๊ณ  ๊ฐ ์š”์†Œ๋งˆ๋‹ค ์ ์ˆ˜๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ
ํ–‰๋งˆ๋‹ค ํ•˜๋‚˜์˜ ๊ฐ’์”ฉ ๋”ํ•ด ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

์กฐ๊ฑด : ์—ฐ์†๋œ ์—ด๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค.

์ ‘๊ทผ ๋ฐฉ๋ฒ•

์ด์ „ ํ–‰์˜ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ ํ˜„์žฌ ํ–‰์„ ๋”ํ•˜๊ณ , ํ˜„์žฌํ–‰์˜ ๊ฐ€์žฅ ํฐ๊ฐ’๊ณผ ๋‹ค์Œํ–‰์„ ๋”ํ•˜๋ฉด์„œ dp๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์˜€๋‹ค.

1 2 3 4       1  2   3   4
5 6 7 8 =>  9 10 11 11

์ฝ”๋“œ์˜ ํ•ต์‹ฌ์€ ์—ฐ์†๋œ ์—ด์˜ ๊ฐ’์„ ๋” ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ
land[row][col] += Math.max(...land[row-1].slice(0, col), ...land[row-1].slice(col+1))โ€‹


์ด์ „ํ–‰์˜ ์—ด๊ณผ ๊ฐ™์€ ์—ด์„ ์ œ์™ธํ•œ ๋ถ€๋ถ„์—์„œ Max๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.

function solution(land) {
    var answer = 0;
    
    for(let row = 1; row < land.length; row++){
        for(let col = 0; col < land[0].length; col++){
            land[row][col] += Math.max(...land[row-1].slice(0, col), ...land[row-1].slice(col+1))
        }
    }
    
    answer = Math.max(...land[land.length-1])
    
    return answer;
}