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
다이나믹 프로그래밍을 사용하면 되는 문제였다
피보나치 수열을 기억하자!
'[개발]programmers > Python3' 카테고리의 다른 글
Lv.2_뒤에 있는 큰 수 찾기 (2) | 2024.10.02 |
---|---|
Lv.3_불량사용자 (0) | 2024.07.11 |
Lv.3_기지국 설치 (1) | 2024.06.04 |
Lv.3_단속카메라 (0) | 2024.06.03 |
Lv.3_등굣길 (0) | 2024.05.30 |