File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed
Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change 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์ด ๋ช ๊ฐ์ธ์ง ์์๋ก ์ถ๊ฐํจ
You canโt perform that action at this time.
0 commit comments