File tree Expand file tree Collapse file tree 1 file changed +72
-0
lines changed
Expand file tree Collapse file tree 1 file changed +72
-0
lines changed Original file line number Diff line number Diff line change 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+
You can’t perform that action at this time.
0 commit comments