https://school.programmers.co.kr/learn/courses/30/lessons/77885
짝수면 맨 마지막 비트가 반드시 0 이므로 해당 숫자보다 1 큰수가 답이다.
홀수면 맨 뒤에서부터 비트를 순회한다. 비트가 01을 10으로 바꾼 값이 답이다.
function solution(numbers) {
let answer = [];
for (let num of numbers) {
if (num % 2 === 1) {
let bin = ("0" + num.toString(2));
for (let i = bin.length - 1; i >= 0; i--) {
if (bin[i - 1] === "0" && bin[i] === "1") {
answer.push(Number.parseInt(bin.substring(0, i - 1) + "10" + bin.substring(i + 1, bin.length), 2))
break;
}
}
}
else
answer.push(num + 1);
}
return answer;
}