본문 바로가기
Programming/C++ - 백준

[백준] 2839번 : 설탕 배달- Greedy Algorithm (C++)

by 지구코드 2023. 5. 25.
반응형


문제


풀이 - Greedy Algorithm(그리디 알고리즘)

가장 적게 봉지를 들고 가도록 하기 위해서 5kg 봉지를 최대한 이용해야 한다.

따라서, n을 5로 나눈 나머지가 0이라면, 몫을 출력한다.

 

	if (n % 5 == 0) {
		bag += (n / 5);
		cout << bag << endl;
		return 0;
	}

 

만약, 5로 나눈 나머지가 0이 아니라면, 3kg 봉지를 하나씩 늘려준 후, while 문을 이용해 if else 문을 반복한다.

 

	else {
		n -= 3;
		bag++;
	}

 

if else 문을 반복하다, n이 음수가 되면 while문을 빠져나와 -1이 출력되도록 한다.


코드

#include <iostream>
using namespace std;

int main() {
	int n, bag = 0;
	cin >> n;

	while (n >= 0) {
		if (n % 5 == 0) {
			bag += (n / 5);
			cout << bag << endl;
			return 0;
		}
		else {
			n -= 3;
			bag++;
		}
	}
	cout << -1 << endl;
}

결과

 

 

2839번: 설탕 배달

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

www.acmicpc.net

 

반응형

댓글