[C++]BOJ 1046 - 기타줄

[C++]BOJ 1046 - 기타줄

딴 거 다 필요 없고 가장 싼 패키지와 낱개 가격만 있으면 된다.

그걸 구하기 위해 나는 정렬을 사용한 모양이다. 굳이 그랬어야 할까.

아무튼 경우의 수는 3가지다.

  1. 패키지로 살 수 있을 만큼 산 후 나머지 부족한 것을 낱개로 구입.

  2. 전부 낱개로 구입.

  3. 기타줄 몇 개 남더라도 싹 다 패키지로 구입.

3개 중 가장 작은 게 답이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, m;
short pa[50], na[50];
cin >> n >> m;
for(int i = 0; i < m; i++)
cin >> pa[i] >> na[i];
sort(pa, pa+m);
sort(na, na+m);
int d1 = pa[0] * (n / 6) + na[0] * (n % 6);
int d2 = na[0] * n;
int d3 = pa[0] * ((n / 6) + 1);
int v = min(min(d1, d2), d3);
cout << v;
}

정렬은 아무리 봐도 불편하다.
나중에 수정하자.