매일 BOJ
(매일 BOJ) C++ 2839번 설탕 배달
norepinephrine
2025. 7. 13. 12:20
이번 문제는 실버 4 난이도의 2839번 설탕 배달 문제이다.

문제 요약
N kg의 설탕을 3kg 또는 5kg 봉지에 담아서 최소 개수로 배달해야 한다.
정확히 Nkg을 만들 수 없으면 -1을 출력한다.
접근법 : Greedy
5kg 봉지를 최대한 많이 쓰고, 남는 걸 3kg로 채워보자.
- N을 5로 나눈 몫만큼 5kg을 써보고
- 남는 무게가 3으로 나눠떨어지는지 확인
- 안 되면 5kg을 하나 줄이고 다시 시도
아래는 작성한 코드이다.
#include <bits/stdc++.h>
using namespace std;
int main (void){
ios::sync_with_stdio(0); cin.tie(0);
int n, count = 0;
cin >> n;
while (n >= 0){ // N이 음수면 -1 출력
if (n % 5 == 0){ // 그리디 사용
count += n / 5; // 5부터 채우기
cout << count;
return 0;
}
n -= 3; // 조건 충족 x > -3 한 후 다시 5 채우기
count += 1;
}
cout << -1;
}