Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 정수의 이진 비트가 교대로 배치되어 있는지 확인하는 방법

문제 설명

정수 num을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다.

이 함수의 역할은 num의 이진수 표현에서 비트가 교대로(alternating) 배치되어 있는지 검사하는 것입니다. 즉, 인접한 두 비트가 항상 서로 다른 값을 가져야 한다는 의미입니다.

예를 들어, 함수에 다음과 같은 입력이 주어진 경우를 살펴보겠습니다.

입력

const num = 5;

출력

const output = true;

출력 설명

숫자 5의 이진수 표현은 101이며, 각 자리의 비트가 1과 0으로 번갈아 나타나기 때문에 결과는 true입니다.

해결 접근 방식

이 문제는 다음과 같은 단계로 해결할 수 있습니다.

1. toString(2) 메서드를 사용하여 정수를 이진수 문자열로 변환합니다.
2. 첫 번째 비트를 기준값(curr)으로 저장합니다.
3. 나머지 비트를 순회하면서 현재 비트가 바로 앞 비트와 다른지 확인합니다.
4. 인접한 비트가 같은 값이면 즉시 false를 반환하고, 모든 비트가 교대로 배치되어 있다면 true를 반환합니다.

예제 코드

다음은 위 로직을 구현한 코드입니다.

const num = 5;
const isAlternating = (num = 1) => {
   const binary = num.toString(2);
   let curr = binary[0];
   for(let i = 1; i < binary.length; i++){
      const el = binary[i];
      if(curr !== el){
         curr = el;
         continue;
    };
    return false;
  };
  return true;
};
console.log(isAlternating(num));

실행 결과

true

위 코드에서 숫자 5는 이진수로 101이므로 모든 인접 비트가 서로 다른 값을 가지며, 함수는 true를 반환합니다. 반면 6(110)이나 7(111)처럼 연속된 동일한 비트가 존재하는 숫자는 false를 반환하게 됩니다.