현수는 제한시간 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));