https://www.acmicpc.net/problem/2579
해당 문제는 동적 프로그래밍으로 푸는 문제였고, 어떻게 구현하는지 몰라 gpt의 도움을 받아 작성했다. 그래도 코드에 대해서 100프로는 이해하지 못한거 같다... 다른 동적 프로그래밍 문제를 더 풀어봐야 할거 같다....
stair = int(input())
stairs = [int(input()) for _ in range(stair)]
dp = [0 for _ in range(stair)]
while True:
if stair == 1:
print(stairs[0])
break
elif stair == 2:
print(stairs[0]+stairs[1])
break
dp[0] = stairs[0]
dp[1] = stairs[0] + stairs[1]
dp[2] = max(stairs[0]+stairs[2],stairs[1]+stairs[2])
for i in range(3,stair):
dp[i] = max(dp[i-2]+stairs[i],dp[i-3]+stairs[i-1]+stairs[i])
print(dp[stair-1])
break
'코딩테스트' 카테고리의 다른 글
[python] 백준 9375 : 패션왕 신해빈 (실버 3) (0) | 2024.07.22 |
---|---|
[python] 1389 번 : 케빈 베이컨의 6단계 법칙 (실버 1) (0) | 2024.07.19 |
[python] 백준 7569 : 토마토 (골드 5) (0) | 2024.07.17 |
[python] 백준 17219 : 비밀번호 찾기 (실버 4) (0) | 2024.07.17 |
[python] 백준 18870 번 : 좌표 압축 (실버 2) (0) | 2024.07.16 |