Skip to content

Commit 6ad83f7

Browse files
committed
3주차 문제 풀이
1 parent 19dd2f9 commit 6ad83f7

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

number-of-1-bits/leehyeyun.js

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+

0 commit comments

Comments
 (0)