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

Narcoker·2022년 12월 16일
0

코딩테스트

목록 보기
78/150

문제

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;
}
profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글