안녕하세요 섹션8 DFS의 동전교환 문제 관련 질문드립니다.
function solution(coins, m) {
coins.sort((a, b) => b - a);
let ans = 0;
function DFS(L, sum) {
if (sum > m) {
return;
}
if (sum === m) {
ans = L;
return "end";
} else {
for (let i = 0; i < coins.length; i++) {
if (DFS(L + 1, sum + coins[i]) === "end") return "end";
}
}
}
DFS(0, 0);
return ans;
}
동전 교환 문제에서 강사님께서 가르쳐주신 코드도 실습해 본 후, 제 나름대로 작성해본 코드입니다.
제 얕은 생각으로는 위 코드처럼 가장 먼저 동전 종류를 내림차순으로 정렬한 후, DFS를 가지쳐 내려나간다면, 가장 큰 단위부터 적용해나가므로 맨 처음 종료조건에 도달해 ans에 대입되는 값이 무조건 최소동전 개수가 되지 않을까 생각해서 이렇게 작성했습니다.
이 풀이가 틀린지 궁금하고, 만일 맞다면 시간복잡도 상 효율이 극단적으로 떨어지는 최악의 경우가 존재할 지 또한 궁금합니다.
귀한 시간 내어 읽어주셔서 감사합니다.
답변 1
continue를 사용하는 이유
0
82
2
정렬 가능 여부 판단하기
0
66
2
알고리즘 학습법 관련해서 질문드립니다.
0
86
1
코드 리뷰 부탁드립니다!
0
90
1
indexOf를 사용해서 풀어보았습니다 !!
0
69
1
저는 이런식으로 구현 해보았습니다 !!
0
65
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
101
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
63
1
영상 보기 전에 직접 풀어봤습니다.
0
75
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
136
2
정규표현식으로 처리해도 상관없나요 ?
0
120
2
3칸씩 건너뛸 수 있을 경우
0
126
2
강의에 대해 질문있습니다.
0
136
2
Object와 Set을 이용해 풀어봤습니다.
0
117
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
145
2
이렇게 풀어도 괜찮을까요?
0
138
1
이렇게 풀어도 괜찮을까요?
0
113
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
130
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
133
1
투포인트알고리즘으로 풀어봤습니다.
0
142
0
코드 리뷰 부탁드립니다.
0
120
1
코드 맞게 작성한 거 아닌가여??
0
146
1





