[JAVA] 백준 12865 - 평범한 배낭

2024. 6. 21. 16:47·PS/다이나믹프로그래밍
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;


public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int[][] dp; // 마지막 상자가 i번째인 가장 큰 가치 .
		int[] weight;
		int[] value;

		for (int k = 1; k <= 1; k++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int N = Integer.parseInt(st.nextToken());
			int K = Integer.parseInt(st.nextToken());
			weight = new int[N + 1];
			dp = new int[N + 1][K + 1];
			value = new int[N + 1];

			for (int i = 1; i <= N; i++) {
				st = new StringTokenizer(br.readLine());
				weight[i] = Integer.parseInt(st.nextToken());
				value[i] = Integer.parseInt(st.nextToken());
			}
//			System.out.println(weight[0]);
			for(int i = 1 ; i <= K; i++) {
				if(weight[1] <= i) {
					dp[1][i] = value[1];
				}
			}
			for(int i = 2; i < N  + 1; i++) {
				for(int j = 1 ; j <K + 1 ; j++) {
					dp[i][j] = dp[i-1][j];
					if(j >= weight[i]) { //i번째 인덱스를 넣을수 있다면
						dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - weight[i]] + value[i]); // i번째 인덱스 넣은 가치 + i번째 인덱스의 무게를 뺀만큼의 가치 구한다 .
					}
				}
			}
			System.out.println(dp[N][K]);
//			for(int i = 1 ; i <= N; i++) {
//				for(int j = 1 ; j < K + 1 ; j++) {
//					System.out.print(dp[i][j]+ " ");
//				}
//				System.out.println();
//			}
		}
	}
}

 

dp 알고리즘 하면 알려져있는 가장 대표적인 문제로

2차원 dp배열을 생성하고 점화식을 작성하면 직관적으로 해결할수 있는 문제이다.

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'PS > 다이나믹프로그래밍' 카테고리의 다른 글

[JAVA] 백준 1446 - 지름길  (0) 2024.10.15
[JAVA] 백준 - 1520 내리막길  (0) 2024.09.21
[JAVA] 백준 2096 - 내려가기  (1) 2024.06.06
[JAVA] 백준 16928 - 뱀과 사다리 게임  (0) 2024.04.05
[JAVA] 백준 9019 - DSLR  (0) 2024.03.30
'PS/다이나믹프로그래밍' 카테고리의 다른 글
  • [JAVA] 백준 1446 - 지름길
  • [JAVA] 백준 - 1520 내리막길
  • [JAVA] 백준 2096 - 내려가기
  • [JAVA] 백준 16928 - 뱀과 사다리 게임
keemjoonsung
keemjoonsung
  • keemjoonsung
    구동
    keemjoonsung
  • 전체
    오늘
    어제
  • keemjoonsung
    • 분류 전체보기 (81)
      • Projects (7)
        • web (4)
        • plugin (3)
      • Trouble Shootings (5)
        • 성능 개선 (4)
        • 버그 해결 (1)
      • Backend (7)
        • Spring Boot (5)
        • Java (0)
        • Elasticsearch (1)
        • Redis (1)
      • PS (50)
        • 자료구조 (11)
        • 다이나믹프로그래밍 (18)
        • 브루트포스(dfs,bfs,backtracking) (13)
        • 구현 (2)
        • 이분탐색 (1)
        • 그리디 (0)
        • 다익스트라 (3)
        • 기타 알고리즘 (2)
      • Cloud (5)
        • AWS (2)
        • GCP (3)
      • CS (5)
        • network (1)
        • algorithm (4)
      • Etc (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    baekjoon
    스프링부트
    헥사고널
    스프링 부트
    자바
    인텔리제이
    우선순위큐
    Spring
    intellj
    spring boot
    다익스트라
    java
    배포
    jpa
    dp
    코딩테스트
    페이지
    레디스
    스프링
    BFS
    브루트포스
    다이나믹프로그래밍
    dfs
    Plugin
    코테
    헥사고날 아키텍쳐
    GCP
    redis
    백준
    ps
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
keemjoonsung
[JAVA] 백준 12865 - 평범한 배낭
상단으로

티스토리툴바