https://swexpertacademy.com/main/code/problem/problemDetail.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
접근 방법
DFS와 조합을 이용했다. 메뉴를 2차원 배열로 받아들였다.
이중 재귀 반복의 시작 인덱스를 1씩 증가시키며 필참한 수는 제외했다.
소스 코드
import java.util.*;
public class Solution {
static int[][] m;
static int T, N, L, point;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for(int t=1; t<=T; t++) {
point = 0;
N = sc.nextInt();
L = sc.nextInt();
m = new int[N][2];
for(int i=0; i<N; i++) {
m[i][0] = sc.nextInt();
m[i][1] = sc.nextInt();
}
for(int i=0; i<N; i++) {
dfs(i, m[i][0], m[i][1]);
}
System.out.println("#" + t + " " + point);
}
}
static void dfs(int n, int f, int k) {
if(k > L) return;
if(f > point) point = f;
if(k == L) return;
for(int j=n+1; j<N; j++) {
dfs(j, f+m[j][0], k+m[j][1]);
}
}
}
'코테 > 자바' 카테고리의 다른 글
[SWEA] 5642. 합 (1) | 2023.05.18 |
---|---|
[SWEA] 11315. 오목 판정 (0) | 2023.05.18 |
[SWEA] 3750. Digit sum (0) | 2023.05.18 |
[SWEA] 3307. 최장 증가 부분 수열 (0) | 2023.05.18 |
[SWEA] 4615. 재미있는 오셀로 게임 (0) | 2023.05.18 |