https://www.acmicpc.net/problem/2839
나의 사고과정)
5kg짜리 갯수와 3kg짜리 갯수의 한계치는 입력 받은 값에서 가장 작은 무게인 3kg짜리를 나눈 값이다.(왜냐하면 3kg짜리만 계속하면 그게 가장 봉지 갯수가 크니까)
그래서 이걸 max 값으로 한 다음 반복문으로 가능한 조합을 다 vector에 넣고 가장 작은 값을 출력하게 했다.
수식에 해당하는 문제인데 난 수식이라기 보단...
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
int input;
cin >> input;
int max = input / 3;
vector<int> v;
for (int i = 0; i <= max; i++)
{
int five_result = 5 * i;
for (int j = 0; j <= max; j++)
{
int three_result = 3 * j;
if (input == (five_result + three_result))
{
v.push_back(i + j);
}
}
}
if (v.empty())
cout << -1;
else
cout << *min_element(v.begin(), v.end());
return 0;
}
다른 분들은 수식으로 풀었던데... 시간 되면 수식으로도 풀어봐야겠다.
'백준 문제풀이 > 브론즈1' 카테고리의 다른 글
백준 11050번 - 이항계수 1 (0) | 2022.01.12 |
---|---|
백준 2869번 - 달팽이는 올라가고 싶다 (0) | 2021.11.14 |
백준 1546번 - 평균 (0) | 2021.10.28 |
백준 1453번 - 피시방 알바 (0) | 2021.10.28 |
백준 1259번 - 팰린드롬수(palindrome) (0) | 2021.10.28 |