File tree Expand file tree Collapse file tree 1 file changed +65
-0
lines changed
Expand file tree Collapse file tree 1 file changed +65
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * @param {number } n
3+ * @return {number }
4+ */
5+ /*
6+ 문제 설명:
7+ 주어진 32비트 부호 있는 정수 n의 비트 순서를 뒤집는 문제이다.
8+
9+ n은 항상 32비트 이진수로 취급되며,
10+ 가장 오른쪽 비트는 가장 왼쪽으로,
11+ 가장 왼쪽 비트는 가장 오른쪽으로 이동한다.
12+ 즉, 32개의 비트 전체를 기준으로 순서를 완전히 반전시킨다.
13+
14+ 이때 숫자의 크기나 부호가 아니라,
15+ 고정된 32비트 이진 표현 자체를 기준으로 처리해야 하며
16+ 앞쪽에 있는 0 비트도 반드시 포함된다.
17+
18+ 입력:
19+ - n: 32비트 부호 있는 정수
20+ - 0 ≤ n ≤ 2³¹ − 2
21+ - n은 항상 짝수이다.
22+
23+ 출력:
24+ - n의 32비트 이진 표현을 뒤집은 값을 정수로 반환한다.
25+
26+ 예시 1:
27+ 입력:
28+ n = 43261596
29+ 이진 표현:
30+ 00000010100101000001111010011100
31+ 비트 순서 반전:
32+ 00111001011110000010100101000000
33+ 출력:
34+ 964176192
35+
36+ 예시 2:
37+ 입력:
38+ n = 2147483644
39+ 이진 표현:
40+ 01111111111111111111111111111100
41+ 비트 순서 반전:
42+ 00111111111111111111111111111110
43+ 출력:
44+ 1073741822
45+
46+ 추가 조건 (Follow up):
47+ - 이 함수가 매우 자주 호출되는 상황을 가정하고,
48+ 성능을 최적화할 수 있는 방법을 고려해야 한다.
49+ */
50+
51+ var reverseBits = function ( n ) {
52+
53+ const binaryString = n . toString ( 2 ) . padStart ( 32 , "0" ) ;
54+ const splitString = binaryString . toString ( ) . split ( "" ) ;
55+ const reverseArray = splitString . reverse ( ) ;
56+ const joinArray = reverseArray . join ( "" ) ;
57+ const value = parseInt ( joinArray , 2 ) ;
58+
59+ return value ;
60+
61+ } ;
62+
63+ console . log ( reverseBits ( 43261596 ) )
64+ console . log ( reverseBits ( 2147483644 ) )
65+
You can’t perform that action at this time.
0 commit comments