코테/백준

[백준/JAVA] 12865번: 평범한 배낭

imname1am 2023. 6. 3. 01:38
반응형

🔺 문제

 

12865번: 평범한 배낭

첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)

www.acmicpc.net

 

 

🔺 코드

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
32
33
34
35
import java.util.*;
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        
        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());
        
        int[][] item = new int[N + 1][2];
        
        for(int i = 0 ; i < N ; i++) {
            st = new StringTokenizer(br.readLine()," ");
            item[i][0= Integer.parseInt(st.nextToken());   // 무게
            item[i][1= Integer.parseInt(st.nextToken());   // 가치
        }
        
 
        int[][] dp = new int[N + 1][K + 1];
        
        for(int k = 1 ; k <= K ; k++) { // 무게
            for(int i = 1 ; i <= N ; i++) { // item
                dp[i][k] = dp[i - 1][k]; // 기본적으로 이전 아이템의 가치 저장
                
                if(k - item[i][0>= 0) { // 무게가 남는다면
                    dp[i][k] = Math.max(dp[i - 1][k], item[i][1+ dp[i - 1][k - item[i][0]]); // 이전 아이템에서 구한 가치 vs (자신의 가치 + 남은 무게의 자치) 中 큰 값 선택
                }
            }
        }
        
        System.out.println(dp[N][K]);
    }
}
cs
✅ 해결 아이디어
✔ DP. 배낭 알고리즘
- 짐을 쪼갤 수 없다!
- dp[아이템 idx][무게] = 가치

 


🔺 다른 풀이들

- 진짜 상세한 설명 & 마지막에 적어두신 글 보고 좀 용기를 얻었다,,,😭

 

[백준알고리즘-JAVA]12865번 풀이(평범한 배낭) - 초보도 이해하는 풀이

안녕하세요 인포돈 입니다. 백준 알고리즘 12865번 풀이입니다. * 참고사항 - 개발환경은 eclipse을 기준으로 작성되었습니다. - java언어를 이용하여 문제를 풀이합니다. - 알고리즘 문제는 풀이를

infodon.tistory.com

 

 

- 읽고 좀 점화식 이해가 됐다,,, 미쳤다,,, (복습용)

 

[백준,BOJ 12865] 평범한 배낭(JAVA 구현, 추가풀이)

-내 생각 이 문제의 경우 혼자 풀어보려고 해서 결과는 잘 나오는 것 같은데 어떤 반례에서 걸리는지 계속 오답처리를 받아서 결국 검색을 해봤는데, 이러한 무게와 가치가 함께 주어지는 문제

fbtmdwhd33.tistory.com

 

 

- 과정 설명 굿,, 이해 완!!!

 

[백준] 12865번 평범한 배낭 (자바 풀이)

문제 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무

code-lab1.tistory.com


💬 느낀 점

어렵지만 포기하지말고 해설이 익숙해질때까지 똑같이 풀어보자,,,

이해가 어려우면 익숙해지고 이해하자,,,,,😵😵

(출처: 인포돈님 글 인용 https://infodon.tistory.com/80)

 

Knapsack  문제 좀,,, 더 찾아보고 풀어봐야겄다

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

[백준,BOJ 12865] 평범한 배낭(JAVA 구현, 추가풀이)

-내 생각 이 문제의 경우 혼자 풀어보려고 해서 결과는 잘 나오는 것 같은데 어떤 반례에서 걸리는지 계속 오답처리를 받아서 결국 검색을 해봤는데, 이러한 무게와 가치가 함께 주어지는 문제

fbtmdwhd33.tistory.com

 

[백준알고리즘-JAVA]12865번 풀이(평범한 배낭) - 초보도 이해하는 풀이

안녕하세요 인포돈 입니다. 백준 알고리즘 12865번 풀이입니다. * 참고사항 - 개발환경은 eclipse을 기준으로 작성되었습니다. - java언어를 이용하여 문제를 풀이합니다. - 알고리즘 문제는 풀이를

infodon.tistory.com

반응형