⭐⭐ 문제
📌 문제 설명
- x보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수 return
- f(2) = 3
2 000...0010
3 000...0011 1
- f(7) = 11
7 000...0111
11 000...1011 2
### 📌 문제 풀이
- 짝수 - 마지막이 무조건 0이기 때문에!! 2 (0010) 끝에 0 -> 1 바꿔주면 된다.
- 홀수
1) 0을 찾는다. 홀수라면 그다음이 무조건 1이겠지
2) "01"을 제거하고 "10"을 넣어준다
📌 코드
function solution(numbers) {
let answer = [];
for (let i = 0; i < numbers.length; i++) {
let current = numbers[i];
if (current % 2 === 0) {
answer.push(current + 1);
} else {
current = "0" + current.toString(2);
let totalLength = current.length;
for (let j = totalLength - 1; j >= 0; j--) {
if (+current[j] === 0) {
answer.push(
parseInt(
current.substring(0, j) +
"10" +
current.substring(j + 2, totalLength),
2
)
);
break;
}
}
}
}
return answer;
}
많은 도움이 되었습니다, 감사합니다.