https://programmers.co.kr/learn/courses/30/lessons/12971
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))
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] N-Queen (Python) (0) | 2021.11.23 |
---|---|
[프로그래머스] 하노이의 탑 (Python) (0) | 2021.11.23 |
[프로그래머스] 숫자 게임 (Python) (0) | 2021.11.23 |
[프로그래머스] 기지국 설치 (Python) (0) | 2021.11.23 |
[프로그래머스] 블록 이동하기 (Python) (0) | 2021.11.18 |
댓글