BOJ - 1535

주의·2024년 1월 31일
0

boj

목록 보기
152/214
post-thumbnail

백준 문제 링크
안녕

❓접근법

  1. 냅색(Knapsack) 알고리즘을 활용했다.
    그 중에서 1차원 배열을 사용한 알고리즘을 활용함.
    알고리즘 참고는 https://chanhuiseok.github.io/posts/improve-6/
  2. 예제 1번의 경우 다음과 같다.
    0 ~ 100 까지의 체력으로 얻을 수 있는 기쁨을 넣는 DP를 만들어야한다.
  3. 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))

알고리즘 이해가 어려웠음...

0개의 댓글