[BOJ / C++] #2839 설탕 배달

Inryu·2020년 8월 13일
0

Problem Solving

목록 보기
2/51
post-thumbnail

🍐문제

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

🍐풀이 과정

정확하게 Nkg을 만드려면 무조건 3kg과 5kg로 이루어져야 하기 때문에

결국 무게는 (5의 배수) + (3의 배수)로 이루어져있다.

이때, 봉지수를 적게 가져가려면

5kg을 우선으로 생각하되 , 5kg으로 로 당장 나누어 떨어지지 않으면 3kg으로 양보 한 후, 5kg으로 또 나눠봐야한다.

🍐코드

//#2839 설탕 배달
#include <iostream>
using namespace std;

int main(void) {

	//입출력 속도 향상 
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base::sync_with_stdio(false);

	int i;
	int n; // 배달해야하는 설탕 n킬로그램
	int bag = 0; //봉지의 개수
	
	cin >> n;

	while (true) {
		//최대한 적은 가방을 가져가려면 5부터 고려
		//1. 5로 나누어 떨어진다면 5에 모두 넣기
		if (n % 5==0) {
			bag += n / 5;
			cout << bag;
			break;
		}

		//2. 5로 나누어 떨어지지 않으면, 3에 하나 넣고 또 5에 들어가는지 검사해야됨
		n -= 3;
		bag++;

		//3. n=0이 됐으면
		if (n==0) {
			cout << bag;
			break;
		}

		//3. n이 5로 나누어지지 않아서 3을 뺐더니 0보다 작다-> 정확하게 N킬로그램을 만들 수 없다. 
		if (n < 0) {
			cout << -1;
			break;
		}
	}

}
profile
👩🏻‍💻

0개의 댓글