1049_기타줄
링크
https://www.acmicpc.net/problem/1049
풀이
브랜드마다 6개 세트의 가격, 낱개의 가격이 주어지고 최소 가격으로 구매할 방법을 찾는 문제입니다.
그렇다면 6개 세트의 가격, 낱개의 가격이 모두 다 필요하지 않겠네요. 각각 최소 가격을 구합니다.
n개의 줄을 사야할 때 (6개 세트 최소 가격)*(n/6) + (낱개 최소 가격)*(n%6)을 해주면 된다고 생각할 수도 있습니다.
하지만 애초에 6개 세트 최소 가격이 낱개로 6개 사는 것보다 크다면, 세트를 사는 것보다 낱개로 6개를 사는 것이 이득입니다.
또, 6개 세트 최소 가격이 낱개 최소 가격 * (n%6)보다 작다면 이것도 그냥 세트로 사는 것이 이득입니다.
따라서 이 두 상황을 고려해서 코드를 짜주면 됩니다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
//1049_기타줄 #include <cstdio> #include <algorithm> using namespace std;
int n, m, a, b, ans; // a 패키지, b 낱개 int amin = 1000, bmin = 1000;
int main(){ scanf("%d %d", &n, &m);
for (int i = 0; i < m; ++i){ scanf("%d %d", &a, &b);
amin = min(amin, a); bmin = min(bmin, b); }
if (amin < bmin * 6) ans += amin * (n / 6); else ans += bmin * (n/6) * 6; n %= 6;
if (amin > n*bmin) ans += n*bmin; else ans += amin;
printf("%d\n", ans);
return 0; } |
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ] 15553 난로 (0) | 2018.11.01 |
---|---|
[백준 BOJ] 1057 토너먼트 (0) | 2018.10.31 |
[백준 BOJ] 1032 명령 프롬프트 (0) | 2018.10.29 |
[백준 BOJ] 1026 보물 (0) | 2018.10.28 |
[백준 BOJ] 1009 분산처리 (0) | 2018.10.27 |