알고리즘 - 2개 이하로 다른 비트

HoJeong Im·2021년 9월 19일
0

Break_Algo

목록 보기
6/46

문제

  • 링크

  • 비트 연산의 문제라고 생각을 했지만, 아니었나

코드

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를 사용해서도 구해야 하는 문제인 줄 알았지만, 시간 초과 ㅠㅠ

  • 그래서 질문 중 하나를 참고 : 정말 감사합니다. 이런 생각은 도대체 어떻게 하시는 건지 ㅠ

profile
꾸준함이 제일 빠른 길이었다

0개의 댓글