๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋•…๋”ฐ๋จน๊ธฐ - Lv.2 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ <์—ฐ์Šต๋ฌธ์ œ> ๋ณธ๋ฌธ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋•…๋”ฐ๋จน๊ธฐ - Lv.2 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ <์—ฐ์Šต๋ฌธ์ œ>

ruby_s 2021. 12. 22. 19:52
728x90
๋ฐ˜์‘ํ˜•
SMALL

๋ฌธ์ œ ์„ค๋ช…

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

์˜ˆ๋ฅผ ๋“ค๋ฉด,

| 1 | 2 | 3 | 5 |

| 5 | 6 | 7 | 8 |

| 4 | 3 | 2 | 1 |

๋กœ ๋•…์ด ์ฃผ์–ด์กŒ๋‹ค๋ฉด, 1ํ–‰์—์„œ ๋„ค๋ฒˆ์งธ ์นธ (5)๋ฅผ ๋ฐŸ์•˜์œผ๋ฉด, 2ํ–‰์˜ ๋„ค๋ฒˆ์งธ ์นธ (8)์€ ๋ฐŸ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ํ–‰๊นŒ์ง€ ๋ชจ๋‘ ๋‚ด๋ ค์™”์„ ๋•Œ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ ์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’์„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์œ„ ์˜ˆ์˜ ๊ฒฝ์šฐ, 1ํ–‰์˜ ๋„ค๋ฒˆ์งธ ์นธ (5), 2ํ–‰์˜ ์„ธ๋ฒˆ์งธ ์นธ (7), 3ํ–‰์˜ ์ฒซ๋ฒˆ์งธ ์นธ (4) ๋•…์„ ๋ฐŸ์•„ 16์ ์ด ์ตœ๊ณ ์ ์ด ๋˜๋ฏ€๋กœ 16์„ return ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

  • ํ–‰์˜ ๊ฐœ์ˆ˜ N : 100,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
  • ์—ด์˜ ๊ฐœ์ˆ˜๋Š” 4๊ฐœ์ด๊ณ , ๋•…(land)์€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ ์ˆ˜ : 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜

์ž…์ถœ๋ ฅ ์˜ˆ

land answer
[[1,2,3,5],[5,6,7,8],[4,3,2,1]] 16

 

๋‚ด๊ฐ€ ํ‘ผ ํ’€์ด

function solution(land) {
    for(let i=1; i<land.length; i++){
        land[i][0] += Math.max(land[i-1][1], land[i-1][2], land[i-1][3]);
        land[i][1] += Math.max(land[i-1][0], land[i-1][2], land[i-1][3]);
        land[i][2] += Math.max(land[i-1][0], land[i-1][1], land[i-1][3]);
        land[i][3] += Math.max(land[i-1][0], land[i-1][1], land[i-1][2]);
    }
    return Math.max(...land[land.length-1]);
}

4์—ด๋กœ ์ •ํ•ด์ ธ์žˆ๊ณ , ๊ฐ ํ–‰์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ฐ™์€ ์—ด์„ ์ œ์™ธํ•˜๊ณ  ์ด์ „ ํ–‰์˜ ์ตœ๋Œ€๊ฐ’์„ ๋ฐ˜์˜ํ•ด์ฃผ๋ฉด๋จ.

 

์ฒ˜์Œ์— ํ‘ผ ํ’€์ด (ํ‹€๋ฆผ)

function solution(land) {
    let bestScore = [...land[0]];
    for(let i=1; i<land.length; i++){
        for(let j=0; j<land[i].length; j++){
            bestScore[j] += land[i].reduce((acc, curr, idx) => {
                if(idx !== j){
                    if(acc >= curr) return acc;
                    else return curr;
                }
                return acc;
            });
            console.log(bestScore);
        }
    }
    return Math.max(...bestScore);
}

๋งค ํ–‰๋งˆ๋‹ค ์ตœ๋Œ€๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•จ. ์ˆœ์„œ๊ฐ€ ๋’ค์„ž์—ฌ์„œ ์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์„ ๋„์ถœํ•  ์ˆ˜ ์—†์Œ.

 

728x90
๋ฐ˜์‘ํ˜•
LIST