자바스크립트 코딩테스트 '동전교환'

릿·2021년 9월 23일
0

코딩테스트

목록 보기
10/27

여러 단위의 동전들이 주어져 있을때 거스름 돈을 가장 적은 수의 동전으로 교환해주려면?

  1. 내 풀이 : 못풀었다ㅠㅠ..이틀동안 고민했는데, 종이에 쓰면서 했는데 계속 콘솔에러에 Maximal size뜨고ㅠㅠ
    이제 겨우 재귀함수에 대해 이해하기 시작했는데 그걸 for문에 넣으니까ㅠㅠ
  2. 쌤 풀이 :
    for문 안에 DFS가 2줄이 아니라 한줄이라서 의아...
    그리고 if문을 2개 써서 시간단축을 한게 특징!
function solution(m, arr){
    let answer=Number.MAX_SAFE_INTEGER;
    let n=arr.length;
    function DFS(L, sum){
        if(sum>m) return;
        if(L>=answer) return;
        if(sum===m){
            answer=Math.min(answer, L);
        }
        else{
            for(let i=0; i<n; i++){
                DFS(L+1, sum+arr[i]);
            }
        }
    }
    DFS(0, 0);
    return answer;
}
let arr=[1, 2, 5];
console.log(solution(15, arr));
profile
항상 재밌는 뭔가를 찾고 있는 프론트엔드 개발자

0개의 댓글