자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.
예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.
자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.
n | answer |
---|---|
78 | 83 |
15 | 23 |
문제 예시와 같습니다.
15(1111)의 다음 큰 숫자는 23(10111)입니다.
function solution(n) {
// binary : 자연수 n -> 2진수 변환
let binary = String(n.toString(2));
let one = 0; // one : binary 변수에서 1의 개수
for (let i = 0; i < binary.length; i++)
if (binary.charAt(i) === "1") one++;
let inc = n; // inc : n 다음 숫자 (increase)
while (true) {
inc++;
// bin : inc -> 2진수 변환
let bin = String(inc.toString(2));
let cnt = 0; // cnt : bin 변수에서 1의 개수
for (let i = 0; i < bin.length; i++)
if (bin.charAt(i) === "1") cnt++;
if (cnt === one) break;
}
return inc;
}