Skip to content

Commit 1a53cf1

Browse files
authored
Merge pull request #2108 from leehyeyun/main
[leehyeyun] WEEK 03 solutions
2 parents e3e6309 + 6ad83f7 commit 1a53cf1

File tree

2 files changed

+148
-0
lines changed

2 files changed

+148
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/**
2+
* @param {number} n
3+
* @return {number}
4+
*/
5+
/*
6+
์–‘์˜ ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ,
7+
์ด ์ •์ˆ˜๋ฅผ 2์ง„์ˆ˜(binary)๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ
8+
'1'๋กœ ์„ค์ •๋œ ๋น„ํŠธ(set bit)์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜.
9+
10+
์ด ๊ฐ’์€ โ€˜ํ•ด๋ฐ ๊ฐ€์ค‘์น˜(Hamming Weight)โ€™๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
11+
12+
์š”์ฒญ ํ˜•์‹ : hammingWeight(n)
13+
14+
์ž…๋ ฅ ํ˜•์‹ :
15+
- n์€ ์–‘์˜ ์ •์ˆ˜
16+
- 1 <= n <= 2^31 - 1
17+
18+
์ถœ๋ ฅ ํ˜•์‹ :
19+
- n์˜ ์ด์ง„ ํ‘œํ˜„์—์„œ '1'์˜ ๊ฐœ์ˆ˜ (์ •์ˆ˜)
20+
21+
์˜ˆ์‹œ :
22+
23+
Example 1
24+
์ž…๋ ฅ :
25+
n = 11
26+
์ถœ๋ ฅ :
27+
3
28+
์„ค๋ช… :
29+
11 โ†’ 1011 (2์ง„์ˆ˜)
30+
1์ด ์ด 3๊ฐœ
31+
32+
Example 2
33+
์ž…๋ ฅ :
34+
n = 128
35+
์ถœ๋ ฅ :
36+
1
37+
์„ค๋ช… :
38+
128 โ†’ 10000000
39+
1์ด ํ•˜๋‚˜๋ฟ
40+
41+
Example 3
42+
์ž…๋ ฅ :
43+
n = 2147483645
44+
์ถœ๋ ฅ :
45+
30
46+
์„ค๋ช… :
47+
2147483645 โ†’ 1111111111111111111111111111101
48+
1์ด ์ด 30๊ฐœ
49+
50+
์ œ์•ฝ์‚ฌํ•ญ :
51+
- ๋งค ํ˜ธ์ถœ์ด ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•ด์•ผ ํ•จ
52+
- ํŒ: ๋น„ํŠธ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ or
53+
n &= (n - 1) ๊ฐ™์€ ๋น„ํŠธ ์ตœ์ ํ™”๊ฐ€ ์กด์žฌํ•จ
54+
55+
์ฐธ๊ณ  :
56+
- ๋งŒ์•ฝ ์ด ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค๋ฉด,
57+
์‚ฌ์ „ ๊ณ„์‚ฐ๋œ lookup table์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ
58+
์ถ”๊ฐ€ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
59+
60+
*/
61+
var hammingWeight = function(n) {
62+
63+
let binaryString = n.toString(2);
64+
let value = binaryString.split("").filter(x => x === "1").length;
65+
66+
return value;
67+
};
68+
69+
console.log(hammingWeight(11));
70+
console.log(hammingWeight(128));
71+
console.log(hammingWeight(2147483645));
72+
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
/*
6+
๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ,
7+
์ด ๋ฌธ์ž์—ด์ด '์œ ํšจํ•œ ํšŒ๋ฌธ(palindrome)'์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ํ•จ์ˆ˜.
8+
9+
ํšŒ๋ฌธ ํŒ๋ณ„ ๊ทœ์น™:
10+
- ๋Œ€๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
11+
- ์˜๋ฌธ์ž(a~z)์™€ ์ˆซ์ž(0~9)๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋Š” ์ œ๊ฑฐํ•œ๋‹ค.
12+
- ์ •์ œ๋œ ๋ฌธ์ž์—ด์„ ์•ž์—์„œ ์ฝ์€ ๊ฒƒ๊ณผ ๋’ค์—์„œ ์ฝ์€ ๊ฒƒ์ด ๊ฐ™์œผ๋ฉด ํšŒ๋ฌธ์ด๋‹ค.
13+
14+
์š”์ฒญ ํ˜•์‹ : isPalindrome(s)
15+
16+
์ž…๋ ฅ ํ˜•์‹ :
17+
- s๋Š” ๋ฌธ์ž์—ด(String)
18+
- 1 <= s.length <= 2 * 10^5
19+
- ๋ฌธ์ž์—ด์€ ASCII ์ถœ๋ ฅ ๋ฌธ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋จ
20+
21+
์ถœ๋ ฅ ํ˜•์‹ :
22+
- ์œ ํšจํ•œ ํšŒ๋ฌธ์ด๋ฉด true
23+
- ์•„๋‹ˆ๋ฉด false
24+
25+
์˜ˆ์‹œ :
26+
27+
Example 1
28+
์ž…๋ ฅ :
29+
s = "A man, a plan, a canal: Panama"
30+
์ถœ๋ ฅ :
31+
true
32+
์„ค๋ช… :
33+
์ •์ œํ•˜๋ฉด "amanaplanacanalpanama"
34+
ํšŒ๋ฌธ์ด๋ฏ€๋กœ true
35+
36+
Example 2
37+
์ž…๋ ฅ :
38+
s = "race a car"
39+
์ถœ๋ ฅ :
40+
false
41+
์„ค๋ช… :
42+
์ •์ œํ•˜๋ฉด "raceacar"
43+
ํšŒ๋ฌธ์ด ์•„๋‹˜
44+
45+
Example 3
46+
์ž…๋ ฅ :
47+
s = " "
48+
์ถœ๋ ฅ :
49+
true
50+
์„ค๋ช… :
51+
์ •์ œ ํ›„ "" (๋นˆ ๋ฌธ์ž์—ด)
52+
๋นˆ ๋ฌธ์ž์—ด์€ ํšŒ๋ฌธ์œผ๋กœ ๊ฐ„์ฃผ๋จ
53+
54+
์ œ์•ฝ์‚ฌํ•ญ :
55+
- ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๋งค์šฐ ํฌ๋ฏ€๋กœ O(n) ๋ฐฉ์‹์ด ์ ํ•ฉํ•จ
56+
*/
57+
var isPalindrome = function(s) {
58+
59+
let cleanString = s.toLowerCase().replace(/[^a-z0-9]/g, '');
60+
61+
let splitString = cleanString.split("");
62+
let reverseArray = splitString.reverse();
63+
let joinArray = reverseArray.join("");
64+
65+
if(cleanString != joinArray)
66+
{
67+
return false
68+
}else {
69+
return true
70+
}
71+
};
72+
73+
console.log(isPalindrome("A man, a plan, a canal: Panama"));
74+
console.log(isPalindrome("race a car"));
75+
console.log(isPalindrome(" "));
76+

0 commit comments

Comments
ย (0)