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

잡초·2024년 7월 16일
0
post-thumbnail

문제

풀이

function solution(numbers) {
    let answer = [];

    for (let num of numbers) {
        // 주어진 숫자를 2진 문자열로 변환
        let binaryStr = num.toString(2);

        // 0이 포함되지 않은 경우, 모든 비트가 1인 경우
        if (!binaryStr.includes('0')) {
            binaryStr = '0' + binaryStr; // 가장 앞에 0을 추가
        }

        // 이진 문자열을 배열로 변환
        let arrNum = binaryStr.split('');

        // 배열을 뒤에서부터 반복하여 첫 번째 0을 1로 바꾸고, 바로 다음 비트를 0으로 변경
        for (let i = arrNum.length - 1; i >= 0; i--) {
            if (arrNum[i] === '0') {
                arrNum[i] = '1'; // 첫 번째 0을 1로 변경
                if (i < arrNum.length - 1) {
                    arrNum[i + 1] = '0'; // 다음 비트를 0으로 변경
                }
                break;
            }
        }

        // 수정된 이진 문자열을 다시 정수로 변환하여 결과 배열에 추가
        answer.push(parseInt(arrNum.join(''), 2));
    }

    return answer;
}
profile
개발자가 되고싶은 잡초

0개의 댓글