문제 설명
양의 정수 x에 대한 함수 f(x)를 다음과 같이 정의합니다.
x보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수
예를 들어,
f(2) = 3 입니다. 다음 표와 같이 2보다 큰 수들 중에서 비트가 다른 지점이 2개 이하이면서 제일 작은 수가 3이기 때문입니다.
function solution(numbers) {
return numbers.map(v => {
let str = '0'+v.toString(2);
if(str[str.length-1] === '0') {
str = str.substring(0, str.length-1) + '1';
} else {
const idx = str.lastIndexOf('01');
str = str.substring(0,idx) + '10' + str.substring(idx+2, str.length);
}
return parseInt(str, 2);
})
}
필자에겐 조금 어려웠던 문제라 다른 사람의 풀이를 인용하였다