Skip to content

Commit f9829f0

Browse files
committed
8주차 문제 풀이
1 parent 40625c5 commit f9829f0

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

reverse-bits/leehyeyun.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
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+

0 commit comments

Comments
 (0)