알고리즘 문제

[C/C++ 백준 1094번] 막대기 (Silver 5)

새파란 공대생 2020. 7. 7. 21:13

https://www.acmicpc.net/problem/1094

 

1094번: 막대기

지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대��

www.acmicpc.net

숫자를 이진법으로 만들어 준 뒤, 1의 개수를 세어주면 되는 문제이다.

코드는 다음과 같다.

 

#include <cstdio>
#include <algorithm>
using namespace std;
int main(void){
	int N, ans=0;
	scanf("%d", &N);
	while(N){
		if(N%2==1)
			ans++;
		N /= 2;
	}
	printf("%d", ans);
}

특별할게 없는 문제지만, 태그에 비트마스킹이라는 태그가 있는 것이 마음에 걸린다.

찾아보니 비트마스크 기법은 bit을 활용해서 문제를 푸는 테크닉이라고 한다. 이 문제의 경우 이진법으로 바꾼 후 1의 개수를 세는 것이므로, 비트마스크 기법이라고 할 수 있을것 같다.