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 |
Tags
- 개발자 면접
- 백준12015
- 알고리즘
- DP
- 카카오 면접
- 2482
- LIS 알고리즘
- 파이썬
- 구간나누기
- Python
- 가장긴증가하는 부분수열
- 최장증가수열
- 카카오 인턴십
- 백준11053
- 정상회담2
- LIS
- 인턴십 면접
- Longest Increasing Subsequence
- 1670
- 기술면접
- 카카오 서류전형
- 단어수학
- 카카오 자기소개서
- 카카오
- 백준
- 카카오 인턴
- 여름인턴십
- 백준12738
- 2629
- 2228
Archives
- Today
- Total
프로그래밍에 대한 고찰 및 생각
[1][Knapsack][배낭 빈틈없이 채우기 문제] (Fractional Knapsack Problem) 본문
알고리즘/Knapsack Problem (가방문제)
[1][Knapsack][배낭 빈틈없이 채우기 문제] (Fractional Knapsack Problem)
Source 2020. 3. 3. 22:26배낭 문제
배낭문제는 n개의물건이 있고 각각 무게와 가치가 주어질때, 물건을 m이하의 무게로 담을때 가능한 최대 가치를 구하는 문제이다.
이 배낭 문제는 크게 3가지로 분류된다.
- 배낭 빈틈없이 채우기 문제 ( Fractional Knapsack Problem)
- 0/1 배낭 문제 (0/1 Knapsack Problem)
- 개수제한 없는 0/1 배낭 문제 (Unbounded Knapsack Problem)
이 중 배낭을 빈틈없이 채우는 문제에 대해 알아보자.
Fraction Knapsack Problem
배낭 빈틈없이 채우기 문제는 최대 가방무게 이하로 물건을 담을때 가치가 최대로 최게 담아야하는데
단, 물건을 일부만 담을 수도 있다.
예를 들어 무게가 10이고 가치가 20인 물건 A를 절반만 담으면 무게가 5고 가치가 10인 물건처럼 담을 수 있다는 의미이다.
이 조건 때문에 가치/무게 값으로 값들을 환산해서 가장 무게대비 가치가 높은 물건부터 차례대로 넣고 무게를 초과하게 되는 물건이 생기면 남은 배낭 무게만큼 잘라서 넣으면 된다.
다음 예를 보자.
최대로 가방에 담을 수 있는 무게는 20이고
총 4개의 보석이 있고 가치와 무게, 가치/무게값은 다음과 같다.
이 보석들을 무게대비 가치가 높은 순으로 담게되면 다음과 같다.
여기서 노란보석을 담을때 무게가 초과하므로 최대무게에 맞게 절반만 담게되면 최종적으로 55의 가치가 최대 가치가 된다.
'알고리즘 > Knapsack Problem (가방문제)' 카테고리의 다른 글
[2][Knapsack][0/1 배낭 문제] (0/1Knapsack Problem) (0) | 2020.03.04 |
---|