바로 문제를 보시죠

봉지는 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를 출력합니다..

 

 

이상 포스터를 마치겠습니다.

+ Recent posts