Skip to content

Commit 7bac230

Browse files
authored
Merge pull request #2105 from juhui-jeong/main
[juhui-jeong] WEEK 03 solutions
2 parents b5435fd + 69fcd06 commit 7bac230

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: O(2^(target / minCandidate))
2+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(target / minCandidate)
3+
function combinationSum(candidates: number[], target: number): number[][] {
4+
const result: number[][] = [];
5+
6+
const dfs = (index: number, remain: number, path: number[]) => {
7+
if (remain === 0) {
8+
result.push([...path]);
9+
return;
10+
}
11+
12+
if (remain < 0 || index === candidates.length) {
13+
return;
14+
}
15+
16+
const num = candidates[index];
17+
18+
path.push(num);
19+
dfs(index, remain - num, path);
20+
path.pop();
21+
22+
dfs(index + 1, remain, path);
23+
};
24+
25+
dfs(0, target, []);
26+
27+
return result;
28+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//ํ’€์ด 1
2+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: O(k)
3+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
4+
// ์†๋„: 2ms
5+
function hammingWeight(n: number): number {
6+
let count = 0;
7+
while (n) {
8+
n = n & (n - 1);
9+
count++;
10+
}
11+
return count;
12+
}
13+
/*
14+
์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ ๋ณต์žก๋„๊ฐ€ ๋†’๊ธฐ ๋•Œ๋ฌธ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ.
15+
Brian Kernighan ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•œ ๋น„ํŠธ ๊ณ„์‚ฐ์œผ๋กœ ์žฌํ’€์ด
16+
17+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: O(log n)
18+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(log n)
19+
// ์†๋„: 0ms
20+
function hammingWeight(n: number): number {
21+
const bitNumber = n.toString(2);
22+
const bitString = String(bitNumber);
23+
24+
const bitArray = bitString.split('').map((s) => Number(s));
25+
return bitArray.reduce((a, b) => a + b);
26+
}
27+
*/
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
2+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
3+
function isPalindrome(s: string): boolean {
4+
//1. s์—์„œ ๋ฌธ์ž์™€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์€ ์ œ๊ฑฐ
5+
//2. ๋Œ€๋ฌธ์ž -> ์†Œ๋ฌธ์ž, ๋„์–ด์“ฐ๊ธฐ, ๊ณต๋ฐฑ ์ œ๊ฑฐ
6+
let originalString = s;
7+
let alphabeticString = originalString.replace(/[^a-zA-Z0-9]/g, '');
8+
const filteredString = alphabeticString.toLowerCase().trim();
9+
10+
//3. ์ œ๊ฑฐ ํ›„ length === 0 ์ผ ๊ฒฝ์šฐ true๋กœ ๊ฒฐ๊ณผ ๊ฐ’ ๋ฐ˜ํ™˜.
11+
if (filteredString.length === 0) {
12+
return true;
13+
}
14+
15+
let count = 0;
16+
let roundedStringLength = Math.round(filteredString.length / 2);
17+
for (let i = 0; i < roundedStringLength; i++) {
18+
// ์–‘ ๋์˜ ๊ธ€์ž๊ฐ€ ๋™์ผํ•œ์ง€ ์ฒดํฌํ•˜๊ณ 
19+
if (filteredString[i] === filteredString[filteredString.length - i - 1]) {
20+
count += 1;
21+
}
22+
}
23+
return count === roundedStringLength ? true : false;
24+
}

0 commit comments

Comments
ย (0)