[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํ‹ฐ์ปค ๋ชจ์œผ๊ธฐ(2) / ํŒŒ์ด์ฌ / python / DP๋ฌธ์ œ
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํ‹ฐ์ปค ๋ชจ์œผ๊ธฐ(2) / ํŒŒ์ด์ฌ / python / DP๋ฌธ์ œ

728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿ’ก solutions  

๐Ÿ’ฌ ์ฒซ ๋ฒˆ์งธ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์€ ๊ฒฝ์šฐ / ์ฒซ ๋ฒˆ์งธ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ์„œ DP ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  ํ’€์ด๋ฅผ ์ง„ํ–‰ํ•จ.

๐Ÿ’ฌ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค 33๋ฒˆ์ด ๋Ÿฐํƒ€์ž„์ด ๋‚˜์„œ ์ฐพ์•„๋ณด๋‹ˆ, ์—ฃ์ง€ ์ผ€์ด์Šค N = 1์ผ ๋•Œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€ ์•Š์•„์„œ ์ธ๋ฑ์Šค ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ์ฒซ ๋ฒˆ์งธ if๋ฌธ์œผ๋กœ ํ•ด๋‹น ์ผ€์ด์Šค๋ฅผ ๋ณด์™„.

 

๐Ÿ‘จ‍๐Ÿ’ป code  

def solution(sticker):
    if len(sticker) == 1: return sticker[0]
    dp1 = [0]*len(sticker) # ์ฒซ ๋ฒˆ์งธ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์€ ๊ฒฝ์šฐ
    dp2 = [0]*len(sticker) # ์ฒซ ๋ฒˆ์งธ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์ง€ ์•Š์€ ๊ฒฝ์šฐ

    dp1[0] = sticker[0]
    dp1[1] = sticker[0]
    for i in range(2, len(sticker)-1):
        dp1[i] = max(dp1[i-2] + sticker[i], dp1[i-1])
    
    dp2[1] = sticker[1]
    for i in range(2, len(sticker)):
        dp2[i] = max(dp2[i-2] + sticker[i], dp2[i-1])
    
    return max(max(dp1), max(dp2))

 

 

๐Ÿ“Œ problem  

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์Šคํ‹ฐ์ปค ๋ชจ์œผ๊ธฐ(2)

N๊ฐœ์˜ ์Šคํ‹ฐ์ปค๊ฐ€ ์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ N = 8์ธ ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์Šคํ‹ฐ์ปค์—์„œ ๋ช‡ ์žฅ์˜ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์–ด๋‚ด์–ด ๋œฏ์–ด๋‚ธ ์Šคํ‹ฐ์ปค์— ์ ํžŒ ์ˆซ์ž์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก

programmers.co.kr


๋ฌธ์ œ ์„ค๋ช…

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


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

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

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



๋ฐ˜์‘ํ˜•