Skip to content

Commit 8862575

Browse files
committed
coin change bfs 풀이
1 parent e666b75 commit 8862575

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

coin-change/highball.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
const coinChange = function (coins, target) {
2+
if (target === 0) return 0;
3+
4+
let level = 0;
5+
let found = false;
6+
7+
let queue = [...coins];
8+
let visit = new Set(coins);
9+
10+
while (queue.length > 0) {
11+
level++;
12+
13+
const queueLength = queue.length;
14+
for (let i = 0; i < queueLength; i++) {
15+
const sum = queue.shift();
16+
17+
if (sum === target) {
18+
found = true;
19+
break;
20+
}
21+
22+
for (let j = 0; j < coins.length; j++) {
23+
if (sum + coins[j] > target || visit.has(sum + coins[j])) continue;
24+
queue.push(sum + coins[j]);
25+
visit.add(sum + coins[j]);
26+
}
27+
}
28+
29+
if (found) break;
30+
}
31+
32+
if (found) return level;
33+
else return -1;
34+
};
35+
36+
console.log(coinChange([1, 2, 5], 11)); //3
37+
console.log(coinChange([2], 3)); //-1
38+
console.log(coinChange([1], 0)); //0
39+
40+
console.log(coinChange([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 40)); //4
41+
42+
console.log(coinChange([186, 419, 83, 408], 6249)); //20
43+
44+
console.log(
45+
coinChange([411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422], 9864)
46+
); //24
47+
48+
console.log(coinChange([1, 2], 3)); //2

0 commit comments

Comments
 (0)