규칙을 찾는것이 쉽지 않았다.
결국 나도 구글링을 하여 조금(?) 도움을 받았다.
틀리면 답지보고 배우는거지뭐
문제는 이후에 발생했다.
100% 채점 후 런타임에러가 뜨는 데 이유를 모르겠었다.
찬찬히 다시 살펴보니 마지막 인덱스에서 나는 오류가 아닌
n이 1이거나 2일때의 문제였다.
따라서 n이 1이거나 2일때에는 예외 처리를 해 주었다.
# n 입력
n = int(input())
# table
table = [0]
# 와인 양 입력
for _ in range(n):
wine = int(input())
table.append(wine)
# n == 1일 경우
if n == 1:
print(table[1])
# n == 2일 경우
elif n == 2:
print(table[1] + table[2])
# n >= 3
else:
# dp 설계
dp = [
0 for _ in range(n + 1)
]
# 초기설정
dp[1] = table[1]
dp[2] = table[1] + table[2]
dp[3] = max(table[1] + table[2], table[2] + table[3], table[1] + table[3])
# 점화식 활용하여 dp 채워넣기
for i in range(4, n+1):
dp[i] = max(dp[i-2] + table[i], dp[i-3] + table[i-1] + table[i], dp[i-1])
print(dp[n])
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
[백준_1463] 1로 만들기 python (0) | 2022.07.02 |
---|---|
[백준_1149] RGB거리 python (0) | 2022.07.01 |
[백준_11726] 2×n 타일링 python (0) | 2022.06.28 |
[백준_2688] 줄어들지 않아 python (0) | 2022.06.27 |
[백준_10164] 격자상의 경로 python (0) | 2022.06.26 |