최대점수 구하기

minho·2021년 11월 24일
0

문제풀이

  1. 주어지는 문제와 시간에 대한 합의 경우의 수를 DFS로 모두 구한다.
  2. 이때 시간이 M보다 넘어가는 경우는 제외시킨다.

코드

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;
    }

주의

time이 m보다 크면 return해주어 다음 재귀함수가 실행 될 수 있도록 한다.

이 방법은 너무많은 예시의 갯수가 나오면 사용하기 힘들다. (모든 경우의 수를 구해야 하므로...)

profile
Live the way you think

0개의 댓글