문제
설명
이번 정보올림피아드대회에서 좋은 성적을 내기 위하여 현수는 선생님이 주신 N개의 문제를 풀려고 합니다.
각 문제는 그것을 풀었을 때 얻는 점수와 푸는데 걸리는 시간이 주어지게 됩니다.
제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 해야 합니다.
(해당문제는 해당시간이 걸리면 푸는 걸로 간주한다, 한 유형당 한개만 풀 수 있습니다.)
입력
첫 번째 줄에 문제의 개수N(1<=N<=20)과 제한 시간 M(10<=M<=300)이 주어집니다.
두 번째 줄부터 N줄에 걸쳐 문제를 풀었을 때의 점수와 푸는데 걸리는 시간이 주어집니다.
출력
첫 번째 줄에 제한 시간안에 얻을 수 있는 최대 점수를 출력합니다.
예시 입력 1
5 20
10 5
25 12
15 8
6 3
7 4
예시 출력 1
41
내 풀이 = 선생님 풀이
import java.util.Scanner;
public class Main8_3 {
static int n, m, answer=Integer.MIN_VALUE;
public void DFS(int L, int p_sum, int t_sum, int[] point, int[] time) {
if(t_sum>m) return;
if(L==n){
answer = Math.max(p_sum, answer);
}
else {
DFS(L+1, p_sum+point[L], t_sum+time[L], point, time);
DFS(L+1, p_sum, t_sum, point, time);
}
}
public static void main(String[] args) {
Main8_3 T = new Main8_3();
Scanner sc = new Scanner(System.in);
n = sc.nextInt(); //문제의 개수
m = sc.nextInt(); //제한 시간
int[] point = new int[n];
int[] time = new int[n];
for (int i = 0; i < n; i++) {
point[i] = sc.nextInt();
time[i] = sc.nextInt();
}
T.DFS(0, 0, 0, point, time);
System.out.println(answer);
}
}
이럴 때가 기분 제일 조치,,,,❤️ 나는 쌤과 알고리즘이 같을 때 희열을 느껴,,,,, 차근차근 잘 공부하고 있는 느낌ㅎㅎ
문제도 5분컷으로 풀어버렸구~~ 기분 최고~!~! 다음 문제, 어려운 문제 다 드루와.
결과
'Algorithm > Inflearn' 카테고리의 다른 글
[Inflearn] 자바 알고리즘 문제풀이 #08-05 5. 동전교환(DFS) (0) | 2023.04.13 |
---|---|
[Inflearn] 자바 알고리즘 문제풀이 #08-04 4. 중복순열 구하기(DFS) (0) | 2023.04.12 |
[Inflearn] 자바 알고리즘 문제풀이 #08-02 2. 바둑이 승차(DFS) (0) | 2023.04.10 |
[Inflearn] 자바 알고리즘 문제풀이 #08-01 1. 합이 같은 부분집합(DFS : 아마존 인터뷰) (0) | 2023.04.09 |
[Inflearn] 자바 알고리즘 문제풀이 #07-08 8. 송아지 찾기(BFS : 상태트리탐색) (0) | 2023.03.16 |