백준 문제 링크
안녕
- 냅색(Knapsack) 알고리즘을 활용했다.
그 중에서 1차원 배열을 사용한 알고리즘을 활용함.
알고리즘 참고는 https://chanhuiseok.github.io/posts/improve-6/- 예제 1번의 경우 다음과 같다.
0 ~ 100 까지의 체력으로 얻을 수 있는 기쁨을 넣는 DP를 만들어야한다.
- max(DP)를 출력하면 끝!
N = int(input())
stamina = list(map(int, input().split()))
pleasure = list(map(int, input().split()))
DP = [0] * 101
for i in range(1, N+1):
s = stamina[i-1]
p = pleasure[i-1]
for j in range(100, 0, -1):
if j > s:
DP[j] = max(DP[j], DP[j - s] + p)
print(max(DP))
알고리즘 이해가 어려웠음...