궤도

[백준] 2839번 : 설탕 배달 본문

💻 현생/⛓ 알고리즘

[백준] 2839번 : 설탕 배달

영이오 2020. 10. 14. 21:34

문제

 


풀이

 

최대한 5kg 봉투를 많이 가져가야 적은 수의 봉투를 가져가게 될 것이다. 그러니 일단 최대한 5kg 봉투에 담는다고 생각한다. 남은 kg수가 0이라면 그대로 루프를 끝내고 3이라면 3kg 봉투 하나 더해주고 끝내면 되지만, 그렇지 않은 경우가 있다. 그렇다면 5kg 봉투를 하나씩 풀면서 3으로 나누어 떨어지는지 확인해 본다.


소스코드

 

#include <iostream>
using namespace std;

int main() {
	int N, remain, five, three;
	bool possible = false;

	cin >> N;
	five = N / 5;
	remain = N % 5;
	if (remain == 0 || remain == 3) { //0 or 3이면 바로
		three = remain / 3;
		possible = true;
	}
	else {
		while (five>0) { //5키로 하나씩 풀며 3으로 나눌 수 있는지 확인
			five--;
			remain += 5;
			if (remain % 3 == 0) {
				three = remain / 3;
				possible = true;
				break;
			}
		}
	}
	if (possible)
		cout << five + three << endl;
	else
		cout << -1 << endl;
}
Comments