가지고 있는 막대기의 길이를 모두 더한 sum
, 가장 작은 막대기 stick
을 이용하여,
가지고 있는 막대기를 일일이 배열에 저장하지 않고 해결할 수 있도록 했다.
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int X, count = 1;
int stick = 64;
int sum = 64;
cin >> X;
while(sum != X){
stick /= 2;
count++;
if(X <= sum-stick){
sum -= stick;
count--;
}
}
cout << count;
return 0;
}