바로 문제를 보시죠
봉지는 3kg, 5kg이 있는데
상근이가 최대한 봉지를 들고 가려고 한다고 합니다.
예를 들어 18kg 배달해야 할 때 5kg = 3개와 3kg = 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다고 합니다.
이때 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.
첫째 줄에는 N이 주어진다( 3 <= N <= 5000)
일단 5로 나누고 안 되면 3으로 해결해야겠지요 ??
1. 만약 N을 5 로 나눴을 때 0이면 5 로 나눕니다.
2. 그렇지 않으면 N -3 을 나눠서 해결합니다. 만약 N이 0보다 작으면 -1을 출력하고 그렇지 않으면 count++을 이용해 하나씩 증가해줍니다.
소스코드는 다음과 같습니다.
추가적인 부분은 소스코드에서 설명드리겠습니다.
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N; // 18 입력
int count = 0;
while(1)
{
if(N % 5 == 0) // 15 % 5 == 0 --------2 (20줄의 밑에 1부터 보시길)
{
count =count + N / 5; // 1 + 15 / 5 = 4
cout<<count<<endl; // 4 출력
break;
}
else{
N = N -3; // 18 - 3 = 15 ------- 1
if(N < 0 )
{
cout<<("-1")<<endl;
break;
}
count++; // count = 1
}
}
return 0;
}
이해가 안 되실 것 같아서 더 추가적으로 설명드리겠습니다.(저만 그럴 수도)
1. 18을 입력합니다.
2. 무한 while문으로 들어갑니다.
3. if문의 18 % 5==0 이 성립하지 않아 else로 들어갑니다.
4. N = N(18) - 3을 하면 N은 15가 됩니다.
5. count ++을 함으로써 count = 1이 됩니다.
6. if문으로 들어갑니다.
7. count(1) + N(15) / 5 ; count = 4가 되겠죠 ???
8. 4를 출력합니다..
이상 포스터를 마치겠습니다.