문제

https://www.acmicpc.net/problem/2839

설명

조금 헤메서 중간에 한번 갈아 엎고 다시 짠 코드다. 먼저 kilo라는 변수에 설탕의 무게를 입력 받고 나서 반복문 for을 이용하여 5kg의 설탕을 입력된 무게 값에 적용될 수 있는 최대 봉투수부터 0개까지 반복하면서 5kg가 메운 무게를 제외한 나머지 무게가 3kg의 설탕 봉투로 처리 할 수 있는지 없는지 검사하고 발견하는 순간 _5kg, _2kg 변수 안에 각각 봉투 수를 적고 break; 문을 통해 반복문을 빠져나온다. 그리고 두 봉투의 갯수 합을 출력한다. 반복문이 모두 끝날때 까지 봉투수가 나오지 않는다면 5kg, 3kg의 봉투로는 해당 무게를 만들 수 없는 것으로 간주하며 반복문을 돌리기전 _5kg,_2kg의 변수를 0로 초기화 했으므로 반복문이 끝나도 두 변수의 값이 0이면 -1이 출력 되도록 하였다.

코드

#include <stdio.h>

int main() {
    int kilo,_5kg=0,_3kg = 0;
    scanf("%d",&kilo);
    for (int i=kilo/5; i>=0; i--)
    {
      if ((kilo - (i*5))%3 == 0)
      {
          _5kg = i;
          _3kg =(kilo - (i*5))/3;
          break;
      }
    }
    if (_5kg == 0 && _3kg == 0 )
        printf("-1\n");
    else
        printf("%d\n",_5kg+_3kg);
    return 0;
}