반응형
문제
풀이 - 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;
}
결과
반응형
'Programming > C++ - 백준' 카테고리의 다른 글
[백준] 10250번 : ACM 호텔 (C++) + 반례 및 그림 설명 (2) | 2024.02.20 |
---|---|
[백준] 27866번 : 문자와 문자열 (C++) (0) | 2024.02.20 |
[백준] 2748번 : 피보나치 수 2 | int & long long 범위 (C++) (0) | 2023.05.24 |
[백준] 2747번 : 피보나치 수 - (C++) (1) | 2023.05.24 |
[백준] 2775번 : 부녀회장이 될테야 - (C++) (2) | 2023.05.24 |
댓글