비트 연산의 문제라고 생각을 했지만, 아니었나
function solution(numbers) {
var answer = [];
const play = number => {
let val = (number.toString(2)+"").split("");
let count = 0;
for(let len = val.length-1 ; len >= 0;len--){
if(val[len] === '0'){
break;
}
else {
count++;
}
}
//console.log(val, count)
if(count === 0){
answer.push(number+1);
}
else {
answer.push(number+(2**(count-1)));
}
};
numbers.forEach(number=>{
play(number);
});
return answer;
}
처음에 사용하고자 했던 방식은 XOR
BigInt를 사용해서도 구해야 하는 문제인 줄 알았지만, 시간 초과 ㅠㅠ
그래서 질문 중 하나를 참고 : 정말 감사합니다. 이런 생각은 도대체 어떻게 하시는 건지 ㅠ