[개발]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

 

다이나믹 프로그래밍을 사용하면 되는 문제였다

피보나치 수열을 기억하자!

'[개발]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