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
- 카카오코테
- KT포트포워딩
- 컴퓨터비전
- BOJ
- 백준스택
- 합성곱연산
- 이것이자바다
- 백준9012
- 딥러닝
- 윤곽선검출
- 백준괄호
- 코딩테스트실력진단
- 백준평범한배낭
- 백준가운데를말해요
- 코테
- 백준온라인저지
- 웹개발기초
- 이것이자바다확인문제
- 이것이자바다9장
- 가운데를말해요
- BOJ1655
- 냅색알고리즘
- 확인문제
- 코드트리
- 2019카카오코테
- 백준
- 스파르타코딩클럽
- 운영체제
- java
- 백준10828
Archives
- Today
- Total
코딩하는 락커
[BOJ 12865] 평범한 배낭 - JAVA 풀이 본문
문제
이 문제는 아주 평범한 배낭에 관한 문제이다.
한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다.
준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자.
입력
첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000)가 주어진다.
입력으로 주어지는 모든 수는 정수이다.
코드
import java.util.Scanner;
public class BOJ12865 {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int k = kb.nextInt();
int[] dy = new int[k+1];
for(int i=0; i<n; i++){
int w = kb.nextInt();
int v = kb.nextInt();
for(int j=k; j>=w; j--){
dy[j] = Math.max(dy[j], dy[j-w]+v);
}
}
System.out.println(dy[k]);
}
}
결과
처음에 어떻게 풀어야 할까 고민을 하다가 다른 사람을 풀이를 봤는데 이해가 안됐다.
그래서 인프런 강의 김태원님의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의 중 DP 부분을 보고 그 알고리즘대로 이해하여 풀었더니 풀렸다^v^ 넘 뿌듯~
'💯 코딩테스트 > [2021~] 💯 코딩테스트' 카테고리의 다른 글
[BOJ 11401] 이항 계수 3 - Python 풀이 (0) | 2022.02.07 |
---|---|
[BOJ 1655] 가운데를 말해요 - JAVA 풀이 (0) | 2022.01.09 |
[BOJ 9012] 괄호 - JAVA 풀이 (0) | 2022.01.03 |
[BOJ 10828] 스택 - JAVA 풀이 (0) | 2022.01.03 |
[2019 KAKAO BLIND RECRUITMENT] 오픈채팅방(42888) (0) | 2021.06.04 |
Comments