DevYoon

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋„๋‘‘์งˆ (Python) ๋ณธ๋ฌธ

PS/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋„๋‘‘์งˆ (Python)

gimewn 2022. 4. 26. 15:59

link ๐Ÿ”— https://programmers.co.kr/learn/courses/30/lessons/42897

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋„๋‘‘์งˆ

๋„๋‘‘์ด ์–ด๋Š ๋งˆ์„์„ ํ„ธ ๊ณ„ํš์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งˆ์„์˜ ๋ชจ๋“  ์ง‘๋“ค์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋™๊ทธ๋ž—๊ฒŒ ๋ฐฐ์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ง‘๋“ค์€ ์„œ๋กœ ์ธ์ ‘ํ•œ ์ง‘๋“ค๊ณผ ๋ฐฉ๋ฒ”์žฅ์น˜๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ ‘ํ•œ

programmers.co.kr

 

def solution(money):
    dp1 = [0]*len(money)
    # ์ฒซ๋ฒˆ์งธ ์ง‘ ํ„ธ๊ธฐ
    dp1[0] = money[0]
    dp1[1] = money[0]
    for idx in range(2, len(money)-1):
        dp1[idx] = max(dp1[idx-1], dp1[idx-2]+money[idx])
    # ๋งˆ์ง€๋ง‰ ์ง‘ ํ„ธ๊ธฐ
    dp2 = [0]*len(money)
    dp2[1] = money[1]
    for idx in range(2, len(money)):
        dp2[idx] = max(dp2[idx-1], dp2[idx-2]+money[idx])
    answer = max(max(dp1), max(dp2))
    return answer

 

โœ๏ธ ๋ฉ”๋ชจ

  • ์ธ๋ฑ์Šค 0๊ณผ ์ธ๋ฑ์Šค -1์€ ์›ํ˜•์œผ๋กœ ๋’€์„ ๋•Œ ์„œ๋กœ ์ธ์ ‘
  • ์ฒซ๋ฒˆ์งธ ์ง‘์„ ๋ฌด์กฐ๊ฑด ํ„ฐ๋Š” ๊ฒฝ์šฐ์™€ ๋งˆ์ง€๋ง‰ ์ง‘์„ ๋ฌด์กฐ๊ฑด ํ„ฐ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋”ฐ๋กœ ์ƒ๊ฐํ–ˆ๋‹ค.