[개발]programmers/Python3
Lv.3_스티커모으기(2)
dowon
2024. 7. 11. 20:10
https://school.programmers.co.kr/learn/courses/30/lessons/12971?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(sticker):
if len(sticker) <= 3:
return max(sticker)
answer = 0
dp1 = [0 for _ in range(len(sticker))]
dp2 = [0 for _ in range(len(sticker))]
dp1[0], dp1[1] = sticker[0], sticker[0]
dp2[0], dp2[1] = 0, sticker[1]
for i in range(2, len(sticker)):
if i == len(sticker)-1:
dp2[i] = max(dp2[i-1], sticker[i]+dp2[i-2])
else:
dp1[i] = max(dp1[i-1], sticker[i]+dp1[i-2])
dp2[i] = max(dp2[i-1], sticker[i]+dp2[i-2])
answer = max(dp1[len(dp1)-2], dp2[len(dp2)-1])
return answer
다이나믹 프로그래밍을 사용하면 되는 문제였다
피보나치 수열을 기억하자!