PS

[백준] 1094번 막대 (C++)

-minari- 2024. 9. 21. 15:22

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

문제 설명

64cm짜리 막대기를 반으로 잘라가면서 내가 원하는 길이로 만들려고 한다.
이때 조각난 막대기를 붙여 원하는 길이로 만들 때 조각난 막대기 수를 구하는 문제이다.

 

주요 로직

1. 비트 마스킹을 사용해서 푼다.
64, 32, 16, 8, 4, 2, 1 이런식으로 줄기 때문에 비트마스킹을 사용해 총 몇 개의 1을 가지고 있는지 확인하면 된다.

 

정답 코드

#include <bits/stdc++.h>

using namespace std;

int x, val;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	
	cin >> x;

	for(int i=0; i<7; i++){
		if(x & (1<<i)) val++;
	}
	
	cout << val << "\n";
	
	return 0;
}