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;
}