현수는 제한시간 M분 안에 N개의 문제를 풀어서 최대점수를 얻을 수 있도록 해야 한다. 이 때, 최대 점수를 구하라.
첫 줄에 문제갯수와 제한시간이 제시.
둘째 줄에 문제의 점수, 걸리는 시간 배열이 제시.
function solution(m, ps, pt){
let answer=0;
function DFS(L, pSum, tSum) {
if (L===ps.length) {
if (answer < pSum && m >= tSum) answer=pSum;
}
else {
console.log(L, pSum, tSum)
DFS(L+1, pSum+ps[L], tSum+pt[L]);
DFS(L+1, pSum, tSum);
}
}
DFS(0, 0, 0);
return answer;
}
let ps=[10, 25, 15, 6, 7];
let pt=[5, 12, 8, 3, 4];
console.log(solution(20, ps, pt));
function solution(m, ps, pt){
let answer=Number.MIN_SAFE_INTEGER;
let n=ps.length;
function DFS(L, sum, time){
if(time>m) return;
if(L===n){
answer=Math.max(answer, sum);
}
else{
DFS(L+1, sum+ps[L], time+pt[L]);
DFS(L+1, sum, time);
}
}
DFS(0, 0, 0);
return answer;
}
let ps=[10, 25, 15, 6, 7];
let pt=[5, 12, 8, 3, 4]
console.log(solution(20, ps, pt));