[Leetcode/C++] 191_Number of 1 Bits

문제는 다음과 같습니다.

지난주 스터디에 이어 아마 마지막? 비트조작 문제입니다.

그냥 맨 오른쪽 1비트부터 시작해 32비트까지 돌면서 자리수가 1인 비트를 세주면 되는 매우 쉬운 문제입니다.

제 풀이는 다음과 같습니다.

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int b=1, cnt=0; // cnt는 1의 개수
        for(int i=0; i<32; i++){
            if(n & b) cnt++;
            if(i==31) break;
            b = b<<1;
        }
        return cnt;
    }
};

결과계산은 변수 cnt에 담았구요,
변수 b를 1부터 시작해 왼쪽으로 shift 연산을 하여 입력받은 변수 n의 모든 비트를 확인하게됩니다.

좋은 웹페이지 즐겨찾기