문제 URL:
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
다음 문제는 설탕 봉지의 최소 개수를 출력하는 프로그램이다.
n: 설탕의 kg
a: 5kg 봉지 개수
b: 3kg 봉지 개수
구해야 하는 결과: a+b
결과를 구하기 위해 다음과 같은 과정을 거쳤다.
- n = 5a+3b로 나타낼 수 있음.
- 3kg 봉지 5개는 5kg 봉지 3개로 더 적게 표현 가능함.→ 3kg 봉지는 4 봉지까지 존재할 수 있음.
따라서 b에 들어갈 수 있는 수는 0~4 - n과 b를 알기 때문에 a를 구하는 식을 다음과 같이 나타낼 수 있음.→ a=(n-3b)/5
- 반복문을 통해 b에 0~4를 넣고, 위 식이 나누어 떨어질 때의 몫이 결국 a가 됨.
- 만약 식이 나누어 떨어지지 않는다면 -1을 출력.
#include<iostream>
using namespace std;
int main()
{
int n, result=-1, count;
cin >> n;
for(int b=0; b<5; b++)
{
count = b;
if((n-3*b)<0)
break;
if((n-3*b)%5==0)
{
result = (n-3*b)/5;
break;
}
}
if(result==-1)
cout << result;
else
cout << result+count;
}