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 | 31 |
Tags
- vscode
- 프로그래머스
- GitHub Action
- Matplotlib
- DeepLearning
- leetcode
- Kaggle
- 완전탐색
- 네이버AItech
- 코딩테스트
- python
- PytorchLightning
- GCP
- docker
- rnn
- GIT
- autoencoder
- 알고리즘
- Kubernetes
- 백준
- datascience
- FastAPI
- FDS
- pytorch
- torchserve
- pep8
- NaverAItech
- wandb
- NLP
- github
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