냅색문제고 dp로 풀었습니다.
import sys
input = sys.stdin.readline
for _ in range(3):
N = int(input())
coins = {}
target = 0
for _ in range(N):
a, b = map(int, input().split())
coins[a] = b
target += a*b
if target&1:
print(0)
continue
target //= 2
dp = [1] + [0] * (target)
for coin in coins:
for money in range(target,coin-1,-1):
if dp[money-coin]:
for j in range(coins[coin]):
if money + coin*j <= target:
dp[money + coin*j] = 1
print(dp[target])
'practivceAlgorithm > 다시 봐야할 문제들' 카테고리의 다른 글
[SWEA][Python] 1242 암호코드스캔 (0) | 2021.09.30 |
---|---|
[백준][Python] 19951 태상이의 훈련소 생활 (0) | 2021.09.28 |
[백준][Python] 1937 욕심쟁이 판다 (0) | 2021.09.19 |
[백준][Python] 17179 케이크 자르기 (0) | 2021.09.17 |
[백준][Python] 19585 전설 : 다음에 해결 (1) | 2021.09.05 |