Skip to content

Commit 2ae8301

Browse files
authored
Merge pull request #1781 from youngduck/main
[youngduck] WEEK 03 solutions
2 parents bf10dbc + b3066e1 commit 2ae8301

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed

โ€Žcombination-sum/youngduck.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* @param {number[]} candidates
3+
* @param {number} target
4+
* @return {number[][]}
5+
*/
6+
var combinationSum = function (candidates, target) {
7+
// ์ž‘์€์ˆซ์ž ๋ถ€ํ„ฐ ๋”ํ•ด์„œ, ๋” ํฐ ์ˆซ์ž๋ฅผ ๋”ํ•ด๋ณผํ•„์š”์—†์ด ๋ฏธ๋ฆฌ ๋ฆฌํ„ด์‹œํ‚ค๊ธฐ์œ„ํ•œ์šฉ๋„, ์ค‘๋ณต๊ฐ’๋„ ๋ฐฉ์ง€๊ฐ€๋Šฅ
8+
candidates.sort();
9+
const result = [];
10+
11+
const sumArr = (arr) => {
12+
if (arr.length === 0) return 0;
13+
else {
14+
const sum = arr.reduce((acc, cur) => acc + cur);
15+
16+
return sum;
17+
}
18+
};
19+
20+
const backtrack = (targetArr, startIndex) => {
21+
const sumData = sumArr(targetArr);
22+
23+
if (sumData === target) {
24+
result.push([...targetArr]);
25+
return;
26+
}
27+
28+
for (let i = startIndex; i < candidates.length; i++) {
29+
if (sumData < target) {
30+
backtrack([...targetArr, candidates[i]], i);
31+
} else if (sumData > target) {
32+
continue;
33+
}
34+
}
35+
};
36+
37+
// ๋ฐฑํŠธ๋ž™ํ‚น ๋ฐฉ์‹์œผ๋กœ ํ’€์˜ˆ์ • (์žฌ๊ท€)
38+
// target๋ณด๋‹ค ์ž‘์„๊ฒฝ์šฐ ๊ณ„์† ๋”ํ•จ. ํด๊ฒฝ์šฐ ์žฌ๊ท€๋ฉˆ์ถค backtrack์ธ์ˆ˜์—
39+
// targetArr๋งŒ์คฌ๋”๋‹ˆ result์— ์ค‘๋ณต๊ฐ’์ด ์ƒ๊น€. ex) 7์„๋งŒ๋“ค๋•Œ[2,2,3],[2,3,2]๊ฐ™์€ ์ค‘๋ณต์ƒ๊น€
40+
// ์ž๊ธฐ์ž์‹  ์ด์ƒ์˜ index๋ฅผ ํƒ€๊ฒŒํ•˜๊ธฐ์œ„ํ•ด์„œ startIndex
41+
backtrack([], 0);
42+
43+
return result;
44+
};

โ€Žnumber-of-1-bits/youngduck.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
var hammingWeight = function (n) {
6+
// ์ด์ง„์ˆ˜ ๋ณ€ํ™˜ํ•จ์ˆ˜ ์‹œ๊ฐ„๋ณต์žก๋„: O(1)
7+
const bin = n.toString(2);
8+
9+
// replace, replaceAll ์‹œ๊ฐ„๋ณต์žก๋„: O(n)
10+
const result = bin.replaceAll('0', '').length;
11+
12+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(n), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
13+
14+
return result;
15+
};

โ€Žvalid-palindrome/youngduck.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
var isPalindrome = function (s) {
6+
// 1. toLowerCase() - O(n)
7+
// 2. replace(/[^a-z0-9]/g, '') - O(n)
8+
const clean = s.toLowerCase().replace(/[^a-z0-9]/g, '');
9+
10+
// 3. [...clean] ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž - O(n)
11+
// 4. reverse() - O(n)
12+
// 5. join('') - O(n)
13+
const reverse = [...clean].reverse().join('');
14+
15+
// 6. ๋ฌธ์ž์—ด ๋น„๊ต - O(n)
16+
return clean === reverse;
17+
};
18+
19+
// ์‹œ๊ฐ„๋ณต์žก๋„ O(n)
20+
// ๊ณต๊ฐ„๋ณต์žก๋„ O(n)

0 commit comments

Comments
ย (0)