티스토리 뷰

백준/실버

[백준 2885번] 초콜릿 식사 (C++)

게임개발기원 2025. 8. 29. 05:47

문제링크 : https://www.acmicpc.net/problem/2885

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int K, num=1, min_num;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    cin >> K;
    while(num < K) num *=2;

    int tmp = num, cnt = 0;
    while(K!=0)
    {
        if(K>=tmp)
        {
            min_num = cnt;
            K-=tmp;
        }
        tmp/=2;
        cnt++;
    }

    cout << num << " " << min_num;

    return 0;
}

 

초콜릿의 크기는 항상 2의 제곱 형태이기 때문에, 우선 입력받은 K 값보다 큰 2의 제곱 값을 구한다.

이후에 해당 값을 2를 나눈 값을 감소시켜가며 (초콜릿 쪼개기) 남은 초콜릿이 없어질때 까지 카운팅해주면 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함