키베이루's diary

[C++] 백준 1049번 기타줄 본문

알고리즘/Greedy

[C++] 백준 1049번 기타줄

키베이루 2022. 10. 17. 13:22

 

1) 문제설명

백준 Online Judge 1049번 기타줄

 

2) 아이디어

상점에서 파는 기타 줄의 패키지와 낱개의 개수가 제한이 없으므로 패키지 또는 낱개의 가격이 가장 저렴한 것만 구입을 한다고 생각하면 쉽게 풀린다.

 

3) 코드

#include<iostream>
#include<queue>
#include<deque>
#include<string.h>
#include<math.h>
#include<cmath>
#include<stack>
#include<algorithm>

using namespace std;
int n, m;
int result, temp;
int arr[10001], brr[10001];
int main() {
	cin >> n >> m;
	for (int i = 0; i < m; i++) {
		cin >> arr[i] >> brr[i];
	}
	sort(arr, arr + m, less<>()); 
	sort(brr, brr + m, less<>());
	// 패키지 및 낱개의 가격 오름차순

	while(n >= 1) {

		if (n > 6) {
			temp = 6;
		}
		else {
			temp = n;
		}

		if (arr[0] < brr[0] * temp) { // 패키지의 가격보다 낱개의 가격이 비쌀경우
			n = n - 6;
			result = arr[0] + result;
		}
		else { // 남은 갯수의 낱개가격이 더 쌀경우
			n = n - 1;
			result = result + brr[0];
		}
	}
	cout << result;
}
Comments