티스토리 뷰
문제링크 : 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를 나눈 값을 감소시켜가며 (초콜릿 쪼개기) 남은 초콜릿이 없어질때 까지 카운팅해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 14929번] 귀찮아 (SIB) (C++) (0) | 2025.08.17 |
---|---|
[백준 3060] 욕심쟁이 돼지 (C++) (0) | 2025.08.13 |
[백준 1614번] 영식이의 손가락 (C++) (0) | 2025.08.13 |
[백준 2057번] 팩토리얼 분해 (C++) (0) | 2025.07.10 |
[백준 17269번] 이름궁합 테스트 (C++) (0) | 2025.07.09 |