Skip to content

Commit e8a7b99

Browse files
committed
counting-bits solution
1 parent 98398cc commit e8a7b99

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

โ€Žcounting-bits/jdy8739.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* @param {number} n
3+
* @return {number[]}
4+
*/
5+
var countBits = function (n) {
6+
const arr = [0];
7+
8+
for (let i = 1; i <= n; i++) {
9+
const num = binary(i);
10+
arr.push(num);
11+
}
12+
13+
return arr;
14+
};
15+
16+
/** ์„ฑ๋Šฅ์ด ๋А๋ฆฌ์ง€๋งŒ ๊ฐ„๊ฒฐํ•œ ํ•จ์ˆ˜ */
17+
function binary(n) {
18+
return n.toString(2).split('').filter((el) => el === '1').length;
19+
}
20+
21+
// ์‹œ๊ฐ„๋ณต์žก๋„ O(n2) -> n์„ ์ด์ง„์ˆ˜๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์ด๋ฅผ ๋ฒผ์—ดํ™”ํ•˜์—ฌ 1์ธ ์›์†Œ๋งŒ ํ•„ํ„ฐ๋งํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค.
22+
// ์—ฌ๊ธฐ์„œ filter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ํ•œ ๋ฒˆ ์ˆœํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— for๋ฌธ๊ณผ ์ค‘์ฒฉ๋˜์–ด 2์ค‘ ๋ฃจํ”„์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง
23+
24+
/** ์„ฑ๋Šฅ์ด ๋น ๋ฅด์ง€๋งŒ ๋ณต์žกํ•œ ํ•จ์ˆ˜ */
25+
function binary(n) {
26+
let num = 1;
27+
let count = 0;
28+
29+
while (num * 2 <= n) {
30+
num = num * 2;
31+
}
32+
33+
while (0 <= n) {
34+
if (num <= n) {
35+
n = n - num;
36+
count++;
37+
}
38+
39+
if (num === 1) {
40+
break;
41+
}
42+
43+
num = num / 2;
44+
}
45+
46+
return count;
47+
}
48+
49+
// ์‹œ๊ฐ„๋ณต์žก๋„ O(n2) -> for๋ฌธ ์•ˆ์— while๋ฌธ์ด ๋Œ๋ฉด์„œ i๊ฐ€ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜๋  ๊ฒฝ์šฐ 1์ด ๋ช‡๊ฐœ์ธ์ง€ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2์ค‘ ๋ฃจํ”„์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง
50+
// ๊ณต๊ฐ„๋ณต์žก๋„ O(n) -> for๋ฌธ์„ ๋Œ๋ฉด์„œ arr์— i๊ฐ€ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜๋  ๊ฒฝ์šฐ 1์ด ๋ช‡ ๊ฐœ์ธ์ง€ ์›์†Œ๋กœ ์ถ”๊ฐ€ํ•จ

0 commit comments

Comments
ย (0)