PS

BOJ 1214 : 쿨한 물건 구매

lickelon 2024. 11. 14. 16:48
  • 문제 링크 : boj.kr/1214
  • 난이도 : P5
  • 태그 : 정수론, 브루트포스
 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net


코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    ll d, p, q;
    cin >> d >> p >> q;
    if(p < q) swap(p, q);

    ll ans = INF;
    for(ll i = 0; i < min(d/q, q) + 1; i++) {
        ll l = max(d - i*p, 0ll);
        ll c = l / q + !!(l % q);
        ans = min(ans, i*p + c*q);
    }
    cout << ans;

    return 0;
}

풀이

값을 만족하는 최솟값 X를 X = aP + bQ라고 할 때, a=0일때의 X값과 a = Q일때의 X값이 같다.

따라서 탐색해야 할 a의 값을 min(D/P, Q)이하로 할 수 있다.

728x90