https://leetcode.com/problems/number-of-1-bits/description/
1. 최하위 1지우는법
n=n&(n-1) 하면 된다.
ex) 11 & 10 == 10으로 최하위 1이 지워진다.
2. 1갯수 세는법
i) n을 2진수로 바꾸는 로직을 이용하면 된다.
ii) 최하위 1을 계속 지우고 cnt++ 하면된다. n이 1이상인동안
3. 전체코드
i)
class Solution {
public:
int hammingWeight(int n) {
//cout<<(1<<31);
int ret=0;
while(n){
ret+=(n%2);
n/=2;
}
return ret;
}
};
ii)
class Solution {
public:
int hammingWeight(int n) {
int cnt=0;
while(n){
n=n&(n-1);
cnt++;
}
return cnt;
}
};
'Algorithm > 비트마스킹' 카테고리의 다른 글
리트코드 a+b c++ // 비트연산 덧셈구현방법 (0) | 2024.05.18 |
---|---|
프로그래머스 2개이하로다른비트 c++ // 비트마스킹, 관찰, 규칙성발견 (0) | 2024.04.14 |
프로그래머스 메뉴리뉴얼 c++ // 비트마스킹 조합 (0) | 2024.01.08 |
백준 17471 게리멘더링 c++ // 비트마스킹, dfs (0) | 2023.12.21 |
백준 1285 동전뒤집기 c++ // 비트마스킹 개선방법 (0) | 2023.12.20 |