본문 바로가기

알고리즘 관련/BOJ

BOJ)1049 기타줄

문제: icpc.me/1049


N개의 기타 줄을 새로 교체하려고 할때 6개로 사는 묶음 가격과 낱개로 구매하는 가격이 M번 주어진다. 


이때 기타 줄을 교체하는데 사용되는 최소비용을 구하는 문제이다.


우리는 당연히 들어오는 M개의 입력중에 최솟값만 처리해주면 된다.


그리고 각 최소 가격에 대해서 6개 묶음의 가격을 A 낱개의 가격을 B라고 할때


A>6*B 라면 무조건 낱개로 구매해주면 되고 아닌경우에는 (N/6)*A+(N%6)*B를 출력해주면 된다.


라고 생각할 수 있겠지만 안타깝게도 6개 미만인 낱개를 살 때 낱개로 1~5개 보다 6개짜리 묶음을 사는게 더 싼 케이스가 들어온다.


따로 예외 처리해주면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdio>
#include <algorithm>
#define MAXX 1000
using namespace std;
int n, m, x, y, a, b;
int main() {
    scanf("%d%d"&n, &m);
    a = b = MAXX;
    for (int i = 0; i < m; i++) {
        scanf("%d%d"&x, &y);
        a = min(x, a);
        b = min(y, b);
    }
    if (a > * b)
        a = * b;
    if ((n % 6)*> a)
        printf("%d\n", (n / 6)*+ a);
    else
        printf("%d\n", (n / 6)*+ (n % 6)*b);
    return 0;
}
cs


'알고리즘 관련 > BOJ' 카테고리의 다른 글

BOJ)10167 금광  (0) 2017.01.14
BOJ)9184 신나는 함수 실행  (0) 2017.01.14
BOJ)2022 사다리  (2) 2017.01.14
BOJ)2252 줄 세우기  (0) 2017.01.14
BOJ)1561 놀이 공원  (0) 2017.01.14