본문 바로가기
백준(baekjoon)/C++

[백준(baekjoon)/C++]백준(BaekJoon) 2839 : 설탕 배달 c++

by starfish22 2022. 7. 16.
728x90

▶문제 : 2839번: 설탕 배달 (acmicpc.net)

 

2839번: 설탕 배달

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

www.acmicpc.net

 

▶코드 작성

#include <iostream>
using namespace std;

int main() {
    int n, cnt = -1;
    cin >> n;

    for (int i = 0;; i++) {
        int temp = n;
        temp -= i * 5;//5부터 제거하여 최소개수를 구하기 유리함
        if (temp >= 0 && temp % 3 == 0 && temp / 3 < 5) {//3으로 나누어 떨어지는지, 최소개수인지
            cnt = i;//5를 뺀 개수
            cnt += temp / 3;//3을 뺀 개수
            break;
        }
        else if (temp < 0) break;//음수가 되면 종료
    }
    cout << cnt;
}

 

▶해석

최소 개수를 구하기 위해 5부터 제외시킨 후 3으로 나누어 떨어진다면 그것이 최소 개수이다. 이때 3으로 나눈 몫이 5 이상이라면 3과 5의 최소공배수인 15를 제외할 수 있는데 3으로 빼는 것보다 5로 빼는 것이 최소 개수이므로 3으로 나눈 몫이 5 미만일 때 최소 개수이다.

728x90

댓글