백준 단계별로 풀어보기 [기본수학 1] 설탕 배달
https://www.acmicpc.net/problem/2839
[풀이]
n = 3*a + 5*b 이므로, 가능한 a+b의 최솟값을 구한다. a가 3과 곱해지므로 n = 3*a + 5*b를 만족하는 경우가 더 있더라도 count 값은 최소가 아니다. 따라서 n이 나누어떨어지면 바로 루프를 탈출하고, 만약 count 값이 a+b로 바뀌지 않고 여전히 0이면 정확히 나누어떨어지지 않으므로 -1을 출력한다.
[코드]
#include <iostream>
int main(void) {
int n, count=0;
int a, b;
std::cin >> n;
for (a = 0; a <= n / 3; a++) {
if ((n - 3 * a) % 5 == 0)
b = (n - 3 * a) / 5;
else continue;
count = a + b;
break;
}
if (count != 0)
std::cout << count;
else std::cout << "-1";
return 0;
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[c++] 백준 4948 베르트랑 공준 (0) | 2021.07.11 |
---|---|
[c++] 백준 2581 소수 (0) | 2021.07.09 |
[c++] 백준 1712 손익분기점 (0) | 2021.07.09 |
[c++] 백준 10872 팩토리얼 (0) | 2021.07.09 |
[c++] 백준 2869 달팽이는 올라가고 싶다 (0) | 2021.07.06 |