반응형

문제출처

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

 

문제풀이

/**
* 초기 막대기의 길이는 64이며 길이가 x인 막대를 만드는 문제이다.
* stick 변수는 초기값을 가지고 있으면서 현재 자른 막대기의 길이를 가지는 변수입니다.
* x를 만드는 방식은 다음과 같다.
* 1. 현재 막대기가 x보다 크다면 막대기를 반으로 자른다.
* 2. 현재 막대기가 x보다 작거나 같다면 막대기를 붙인다.
* => 막대기를 붙였으므로 남은 x의 길이를 알기 위해 x를 막대기 길이만큼 빼줍니다.
*/

소스코드

#include <iostream>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int x, stick=64;
    cin>>x;
    int cnt=0;
    while(x>0) {
        if(stick > x) stick/=2;
        else {
            cnt++;
            x -= stick;
        }
    }
    cout<<cnt<<endl;
    return 0;
}
반응형

'Algorithm' 카테고리의 다른 글

[BOJ 13458] 시험감독  (0) 2019.04.15
[BOJ 1057] 토너먼트  (0) 2019.04.15
[BOJ 11718] 그대로 출력하기  (0) 2019.04.15
[SWEA 1244] 최대 상금  (4) 2019.02.27
[BOJ 3908] 서로 다른 소수의 합  (0) 2019.02.27

+ Recent posts