PROGRAMMING CODE/C

[BAEKJOON] No.1094 C언어

daye_ 2021. 10. 19. 03:13

막대기

 

#include <stdio.h>
int check(int n,int *bar){
    for(;;){
        if(n>=*bar) return *bar; //막대의 크기가 n보다 크거나 같다면 그대로 return (초기의 연산)
        *bar/=2;
        if(*bar<n) return *bar; //막대의 크기가 n보다 작아지는 즉시 bar return
    }
}
int main(int argc, char* argv[]){
    int n,num=0,bar=64;
    scanf("%d",&n);
    while(1){
        if(n==0)break; //n이 0이되면 연산 끝
        n -= check(n,&bar); //원하는 크기에서 bar를 빼준다.
        num++; //bar의 개수
    }
    printf("%d\n",num);
    return 0;
}