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