ํด๋น ๊ฒ์๋ฌผ์ longroadhome๋์ [ํ๋ก๊ทธ๋๋จธ์ค] LV.3 ์คํฐ์ปค ๋ชจ์ผ๊ธฐ (JS)๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ ์๋์์์ ๋ฏธ๋ฆฌ ๋ฐํ๋๋ค.
N๊ฐ์ ์คํฐ์ปค๊ฐ ์ํ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ๋ค์ ๊ทธ๋ฆผ์ N = 8์ธ ๊ฒฝ์ฐ์ ์์์ ๋๋ค.
์ํ์ผ๋ก ์ฐ๊ฒฐ๋ ์คํฐ์ปค์์ ๋ช ์ฅ์ ์คํฐ์ปค๋ฅผ ๋ฏ์ด๋ด์ด ๋ฏ์ด๋ธ ์คํฐ์ปค์ ์ ํ ์ซ์์ ํฉ์ด ์ต๋๊ฐ ๋๋๋ก ํ๊ณ ์ถ์ต๋๋ค. ๋จ ์คํฐ์ปค ํ ์ฅ์ ๋ฏ์ด๋ด๋ฉด ์์ชฝ์ผ๋ก ์ธ์ ํด์๋ ์คํฐ์ปค๋ ์ฐข์ด์ ธ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ ๊ทธ๋ฆผ์์ 14๊ฐ ์ ํ ์คํฐ์ปค๋ฅผ ๋ฏ์ผ๋ฉด ์ธ์ ํด์๋ 10, 6์ด ์ ํ ์คํฐ์ปค๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์คํฐ์ปค์ ์ ํ ์ซ์๊ฐ ๋ฐฐ์ด ํํ๋ก ์ฃผ์ด์ง ๋, ์คํฐ์ปค๋ฅผ ๋ฏ์ด๋ด์ด ์ป์ ์ ์๋ ์ซ์์ ํฉ์ ์ต๋๊ฐ์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์. ์ํ์ ์คํฐ์ปค ๋ชจ์์ ์ํด ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ๋ง์ง๋ง ์์๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ๊ฐ์ฃผํฉ๋๋ค.
sticker | answer |
---|---|
[14, 6, 5, 11, 3, 9, 2, 10] | 36 |
[1, 3, 2, 5, 4] | 8 |
์
์ถ๋ ฅ ์ #1
6, 11, 9, 10์ด ์ ํ ์คํฐ์ปค๋ฅผ ๋ผ์ด ๋์ ๋ 36์ผ๋ก ์ต๋๊ฐ ๋ฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
3, 5๊ฐ ์ ํ ์คํฐ์ปค๋ฅผ ๋ผ์ด ๋์ ๋ 8๋ก ์ต๋๊ฐ ๋ฉ๋๋ค.
function solution(sticker) {
// ๋์ ๊ณํ์ ์ํด ๊ธฐ์กด ๊ธธ์ด์ 2๋ฅผ ๋ํ ๊ธธ์ด๋ฅผ ์์ฑ
const len = sticker.length+2
// ์ฒซ ์คํฐ์ปค๋ฅผ ๋ ๊ฒฝ์ฐ
const arr1 = Array(len).fill(0)
// ๋ ๋ฒ์งธ ์คํฐ์ปค๋ถํฐ ๋ ๊ฒฝ์ฐ
const arr2 = Array(len).fill(0)
if(sticker.length === 1) return sticker[0]
// 2๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ 0๋ฒ์งธ ์ธ๋ฑ์ค ์ทจ๊ธ, ์ฒซ ์คํฐ์ปค๋ฅผ ๋ ๋ค๋ฉด ์ํ ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ ์ ๋ง์ง๋ง ์คํฐ์ปค๋ฅผ ๋ ์ ์์ผ๋ฏ๋ก len-1
for(let i = 2 ; i < len-1 ; i ++) {
// ์ด๋ฒ ์คํฐ์ปค๋ฅผ ๋ ์ฐจ๋ก์ ๊ฒฝ์ฐ ์ด ์ ์คํฐ์ปค๋ฅผ ๋ ๋ค๋ฉด ์ด๋ฒ์ ๋ ์ ์์ผ๋ฏ๋ก ์ซ์ ๋์ผ, ์๋๋ผ๋ฉด ์ด ์ ๊น์ง์ ์ดํฉ + ์ด๋ฒ ์คํฐ์ปค์ ๊ฐ ( 2๋ถํฐ ์์ํ์ผ๋ฏ๋ก -2๊ฐ ํด๋น๋ฒ์งธ์ ์ซ์ )
arr1[i] = Math.max(arr1[i-1], arr1[i-2]+sticker[i-2])
}
for(let i = 3 ; i < len ; i ++) {
arr2[i] = Math.max(arr2[i-1], arr2[i-2]+sticker[i-2])
}
// arr1์ ๋ง์ง๋ง ์คํฐ์ปค๋ฅผ ๋์ง ๋ชปํ๋ฏ๋ก ๊ธธ์ด์ -2๋ฅผ ํ ๊ฐ์ด ์ต์ข
ํฉ
return Math.max(arr1[arr1.length-2], arr2[arr2.length-1])
}