๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.3 : ์Šคํ‹ฐ์ปค ๋ชจ์œผ๊ธฐ(2) - ํ•˜๋‚˜๋งŒ ํ‹€๋ฆด ๋•Œ ํ•ด๊ฒฐ

by xxilliant 2025. 2. 27.
728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/12971

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 3.

๋†“์น˜๊ธฐ ์‰ฌ์šด ๋ถ€๋ถ„์„ ๋‹ค์‹œ ์ƒ๊ธฐ์‹œ์ผœ์ฃผ๋Š” ๋ฌธ์ œ

์ „๋ฐ˜์ ์ธ ๊ณผ์ •์€ Dynamic Programming์œผ๋กœ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

1. DP - ์ œ์ถœ ์‹œ 85.9์ 

์ •ํ™•์„ฑ 1๊ฐœ(ํ…Œ์ŠคํŠธ 33๋ฒˆ), ํšจ์œจ์„ฑ 1๊ฐœ(1๋ฒˆ) ํ‹€๋ฆผ

์ด์œ ๋Š” ..

 

N์ด 1์ธ ๊ฒฝ์šฐ๋ฅผ ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ–ˆ๋‹ค.

ํ‘ํ‘ ๊ฒฝ๊ณ„๊ฐ’ ํ…Œ์ŠคํŠธ ์ž˜ ํ•ด๋ณด์ž

 

๊ธธ์ด๊ฐ€ 1์ผ ๋•Œ๋Š” ๋ฐ”๋กœ ๋ฆฌํ„ดํ•˜๋„๋ก ํ•ด์คฌ๋”๋‹ˆ, 100์  ํ†ต๊ณผ!

 

 

2. ์ œ์ถœ ์‹œ 100์ ๐Ÿ˜Ž

๋‚˜์˜ ํ’€์ด

function solution(sticker) {
    var answer = 0;
    // n์ด 1์ผ๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
    if(sticker.length == 1) return sticker[0];
    // dp? ํ•ด๋‹น ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์—ˆ์„ ๋•Œ max๊ฐ’
    let dp1 = [];
    let dp2 = [];
    sticker.map((x)=>{
        dp1.push(x);
        dp2.push(x);
    })
    // ์ฒซ๋ฒˆ์งธ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์—ˆ์„ ๋•Œ
    dp1[sticker.length-1] = 0;
    dp1[1] = Math.max(dp1[0],dp1[1]);
    for(let i=2; i<sticker.length; ++i){
        dp1[i] = Math.max(dp1[i-1], dp1[i]+dp1[i-2]);
    }
    // ๋งˆ์ง€๋ง‰ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์—ˆ์„ ๋•Œ
    dp2[0] = 0;
    for(let i=2; i<sticker.length; ++i){
        dp2[i] = Math.max(dp2[i-1], dp2[i]+dp2[i-2]);
    }
    
    answer = Math.max(Math.max(...dp1),Math.max(...dp2));
    return answer;
}

 

์ฒซ๋ฒˆ์งธ ์Šคํ‹ฐ์ปค์™€ ๋งˆ์ง€๋ง‰ ์Šคํ‹ฐ์ปค๊ฐ€ ์ด์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ ์„œ max๋ฅผ ๊ตฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ฒฝ๊ณ„๊ฐ’ ํ…Œ์ŠคํŠธ์˜ ์ค‘์š”์„ฑ....!

 

728x90
๋ฐ˜์‘ํ˜•