Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 코딩테스트
- Kaggle
- 네이버AItech
- FastAPI
- pep8
- leetcode
- 백준
- 알고리즘
- Matplotlib
- Kubernetes
- torchserve
- GitHub Action
- docker
- GCP
- vscode
- FDS
- github
- datascience
- 프로그래머스
- DeepLearning
- pytorch
- autoencoder
- wandb
- 완전탐색
- python
- PytorchLightning
- GIT
- NLP
- rnn
- NaverAItech
Archives
- Today
- Total
Sangmun
배낭 문제(냅색 문제) - 2(분할 불가능한 냅색 문제) 본문
분할이 불가능한 배낭문제를 0-1 배낭 문제라고 한다.
https://www.youtube.com/watch?v=A8nOpWRXQrs&t=3s
* 동적 계획법으로 푸는법
n = 3
W = 30
w = [0,5,10,20]
p = [0, 50,60,140]
# 구하고자 하는것
# p[3][W] = p[3][30]
def knapsack2(i, W, w, p):
if (i <= 0 or W <= 0):
return 0
if (w[i] > W):
value = knapsack2(i - 1, W, w, p)
print(i-1, W, value)
return knapsack2(i - 1, W, w, p)
else:
left = knapsack2(i - 1, W, w, p)
print(i - 1, W, left)
right = knapsack2(i - 1, W - w[i], w, p)
print(i - 1, W - w[i], right)
return max(left, p[i] + right)
profit = knapsack2(len(w) -1, W, w, p)
print(profit)
'알고리즘 > 알고리즘(초급)' 카테고리의 다른 글
배낭 문제(냅색 문제) - 1 (분할가능한 배낭 문제) (0) | 2022.12.20 |
---|---|
python queue 구현 (0) | 2022.12.04 |
python 으로 stack 직접 구현하기 (0) | 2022.12.04 |
투포인터 (0) | 2022.11.23 |
백트래킹을 이용한 부분 집합을 구하는 알고리즘 (0) | 2022.11.21 |
Comments