본문 바로가기

코딩/백준 BOJ

[백준/C언어] 2839번 - 설탕 배달

백준 웹사이트 "2839번 - 설탕 배달" 문제풀이입니다.

언어는 C언어입니다. (제출 언어: C99)

 


문제

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net


소스 코드

#include <stdio.h>

int main(void){
    int N;
    scanf("%d", &N);

    int num = -1;
    int max = N/5; // N보다 작은, 가장 큰 5의 배수

    for(int i=max; i>=0; i--){
        if((N-i*5)%3==0){
            num = i + (N-i*5)/3;
            break;
        }
        else{
            if(i==0)
                break;
            else
                continue;
        }
    }
    
    printf("%d", num);
}

문제 풀이

  문제의 조건대로 설탕 봉지의 개수가 최소가 되기 위해서는 5킬로그램 봉지의 개수가 최대가 되어야 합니다. 하지만 정확히 N 킬로그램을 배달해야한다는 것도 동시에 고려해야 합니다. 이를 위해 N보다 작은, 가장 큰 5의 배수를 구합니다 (Line 8의 'max'). 5킬로그램 봉지가 아무리 많아도 개수는 max를 넘지는 못하기 때문에, 최대인 max부터 개수를 하나씩 줄여가며 3킬로그램 봉지로 나머지 무게를 채울 수 있는지 확인합니다 (Line 10의 for문). N 킬로그램을 정확히 채우는 5킬로그램, 3킬로그램 봉지의 수가 구해지면 이를 출력하고, 구해지지 않는다면 '-1'이 출력되도록 합니다.

반응형