๐ŸŸจ[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํ‹ฐ์ปค ๋ชจ์œผ๊ธฐ(2)

Chobbyยท2022๋…„ 5์›” 19์ผ
1

Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
32/345

ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ์€ longroadhome๋‹˜์˜ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] LV.3 ์Šคํ‹ฐ์ปค ๋ชจ์œผ๊ธฐ (JS)๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ œ์ž‘๋˜์—ˆ์Œ์„ ๋ฏธ๋ฆฌ ๋ฐํž™๋‹ˆ๋‹ค.

๐Ÿ‘จโ€๐Ÿฆฐ๋ฌธ์ œ ์„ค๋ช…

N๊ฐœ์˜ ์Šคํ‹ฐ์ปค๊ฐ€ ์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ N = 8์ธ ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์Šคํ‹ฐ์ปค์—์„œ ๋ช‡ ์žฅ์˜ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์–ด๋‚ด์–ด ๋œฏ์–ด๋‚ธ ์Šคํ‹ฐ์ปค์— ์ ํžŒ ์ˆซ์ž์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹จ ์Šคํ‹ฐ์ปค ํ•œ ์žฅ์„ ๋œฏ์–ด๋‚ด๋ฉด ์–‘์ชฝ์œผ๋กœ ์ธ์ ‘ํ•ด์žˆ๋Š” ์Šคํ‹ฐ์ปค๋Š” ์ฐข์–ด์ ธ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ๊ทธ๋ฆผ์—์„œ 14๊ฐ€ ์ ํžŒ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์œผ๋ฉด ์ธ์ ‘ํ•ด์žˆ๋Š” 10, 6์ด ์ ํžŒ ์Šคํ‹ฐ์ปค๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์Šคํ‹ฐ์ปค์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์–ด๋‚ด์–ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž์˜ ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์›ํ˜•์˜ ์Šคํ‹ฐ์ปค ๋ชจ์–‘์„ ์œ„ํ•ด ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘ณโ€โ™€๏ธ์ œํ•œ ์‚ฌํ•ญ

  • sticker๋Š” ์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์Šคํ‹ฐ์ปค์˜ ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด๋กœ, ๊ธธ์ด(N)๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • sticker์˜ ๊ฐ ์›์†Œ๋Š” ์Šคํ‹ฐ์ปค์˜ ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž์ด๋ฉฐ, ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์›ํ˜•์˜ ์Šคํ‹ฐ์ปค ๋ชจ์–‘์„ ์œ„ํ•ด sticker ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘ณโ€โ™‚๏ธ์ž…์ถœ๋ ฅ ์˜ˆ

stickeranswer
[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])
}
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

0๊ฐœ์˜ ๋Œ“๊ธ€