#include <iostream>
int n, a;
int main(void)
{
std::cin >> n;
// 최대값 64니까 2의 6승까지만 비트마스킹
for(int i = 0 ; i < 7 ; i++)
{
// 해당 자릿수에 비트가 있으면 증가
if(n & (1 << i)) a++;
}
std::cout << a << '\n';
}
[Try]
1. 문제에서 뭘 장황하게 설명하고 있지만, 결국에는 1, 2, 4, 8, 16, 32 등 2의배수로 수를 만들라는 뜻. 비트만 세주면 된다
[Point]
1. builtin popcount (gcc 내장함수, 정수에서 1 비트 수를 세준다)
2. 비트연산자에 친숙해지기
'PS > BOJ' 카테고리의 다른 글
[백준] 1316.cpp : 그룹 단어 체커 (0) | 2020.06.14 |
---|---|
[백준] 2748.cpp : 피보나치 수 2 (0) | 2020.06.12 |
[백준] 2941.cpp : 크로아티아 알파벳 (0) | 2020.06.11 |
[백준] 5086.cpp : 배수와 약수 (0) | 2020.06.10 |
[백준] 1427.cpp : 소트인사이드 (0) | 2020.06.09 |