본문 바로가기
Programming/Programmers

[프로그래머스] 스티커 모으기(2) (Python)

by 데이터현 2021. 11. 23.

https://programmers.co.kr/learn/courses/30/lessons/12971

 

코딩테스트 연습 - 스티커 모으기(2)

N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록

programmers.co.kr

DP 유형의 문제다.

첫 번째 스티커를 찢는 경우, 찢지 않는 경우를 따져서 문제를 풀면 된다.

 

나의 풀이

def solution(sticker):
    if len(sticker) <=3 :
        return max(sticker)
    dp = [0] * len(sticker)
    dp[0] = sticker[0]
    dp[1] = sticker[0]
    for i in range(2,len(sticker)-1):
        dp[i] = max(dp[i-1],dp[i-2]+sticker[i])
    first_sticker = max(dp)
    dp = [0] * len(sticker)
    dp[1] = sticker[1]
    for i in range(2,len(sticker)):
        dp[i] = max(dp[i-1],dp[i-2]+sticker[i])
    return max(first_sticker,max(dp))

댓글