[백준] #1535 안녕 python

2023. 5. 8. 15:26

https://www.acmicpc.net/problem/1535

 

1535번: 안녕

첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번

www.acmicpc.net

 

📕 설명 📕

 

 

 

Knapsack으로 풀이하였다.

 

방법론으로만 접근하여 잘 이해는 안 된다.

 

나중에 다시 풀어봐야지.

 

 

🧑🏻‍💻 나의 풀이 🧑🏻‍💻

from sys import stdin

N = int(input())
people = [0] + list(map(int, stdin.readline().split()))
happiness = [0] + list(map(int, stdin.readline().split()))

dp = [[0] * 101 for _ in range(N + 1)]

for i in range(1, N + 1):
    for j in range(1, 101):
        if people[i] <= j:
            dp[i][j] = max(dp[i-1][j], dp[i-1][j - people[i]] + happiness[i])
        else:
            dp[i][j] = dp[i-1][j]

print(dp[N][99])

BELATED ARTICLES

more