여기서 우리는 숫자가 이진 표현에서 인접한 세트 비트를 가지고 있는지 볼 것입니다. 숫자 12에 두 개의 연속 1이 있다고 가정합니다(12 =1100).
이 유형의 숫자를 확인하는 아이디어는 매우 간단합니다. 숫자를 1비트로 이동한 다음 비트별 AND를 수행합니다. 비트 AND 결과가 0이 아닌 경우 연속 1이 있어야 합니다.
예
#include <iostream> using namespace std; bool hasConsecutiveOnes(int n) { if((n & (n >> 1)) == 1){ return true; }else{ return false; } } int main() { int num = 67; //1000011 if(hasConsecutiveOnes(num)){ cout << "Has Consecutive 1s"; }else{ cout << "Has No Consecutive 1s"; } }
출력
Has Consecutive 1s