문제
https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
문제 풀이
#include <iostream>
using namespace std;
//promising의 조건
int N;
int ans = 0;
int main() {
// 설탕을 정확하게 N킬로그램을 배달해야한다.
//봉지에는 3,5가 있다.
cin >> N;
while (N>0) {
//N의 경우
//(1) 5의 배수
//(2) 3의 배수
//5,3의 배수가 아닌수
//3-1 5보다 큰 수
//3-2 음수
if (N % 5 == 0) {
ans++;
N -= 5;
}
else if (N % 3 == 0) {
ans++;
N -= 3;
}
else if (N > 5) {
ans++;
N -= 5;
}
else {//3-1에서 5를 뺀 값이 음수가 되면.
ans = -1;
break;
}
}
cout << ans;
return 0;
}
backtracking으로 푸려고 했으나, 힘들었다.
greedy 알고리즘으로 먼저 5로 나누는 값을 비교한 뒤, 3으로 나누고, 둘 다 아닌 경우 (5보다 큰 값에서) 5를 빼준다.
if문 - else if문을 안 쓰고 if문 3개를 써서,
애를 조금 먹었다.
'programming language > Algorithm' 카테고리의 다른 글
[Dynamic Programming 예제] 백준 12865 배낭문제 (0) | 2021.08.20 |
---|---|
[Backtracking 예제] 백준 9663 N-Queens (0) | 2021.08.19 |
Backtracking (0) | 2021.08.19 |
[Greedy Approach 예제] 프로그래머스 level2 조이스틱 (0) | 2021.08.17 |
[Greedy Approach 예제] 백준 1197 (kruskal) (0) | 2021.08.17 |