[프로그래머스 JavaScript] 2개 이하로 다른 비트

DO YEON KIM·2024년 3월 9일
0

프로그래머스 Lv2

목록 보기
56/57


문제 링크


문제 설명
양의 정수 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);
    })
}

필자에겐 조금 어려웠던 문제라 다른 사람의 풀이를 인용하였다

profile
프론트엔드 개발자를 향해서

0개의 댓글