본문 바로가기
이론/코딩테스트

[백준] 1049번 기타줄 (그리디 알고리즘)

by 퇴근후개발 2022. 8. 15.
반응형

-문제

1. 세트가격의 최솟값은 세트가격들과 (낱개가격 * 6)에서 최솟값 찾기

2. 낱개가격의 최솟값은 낱개가격들에서 최솟값 찾기

3. 세트가격으로 살 수 있을 만큼 구매하고(q개), 남은 개수(r개)는 세트가격과 (낱개가격 * r)가격 비교해서 최솟값으로 선택하기

 

-코드

#include<stdio.h>
using namespace std;

int main() {
	int n, m, tmp1=0, tmp2=0, setMin = 1000, oneMin = 1000, sum =0 ;
	scanf("%d %d", &n, &m);
	for (int i = 0; i < m; i++)
	{
		scanf("%d %d", &tmp1, &tmp2);
		if (tmp1 < setMin) setMin = tmp1;
		if (tmp2 < oneMin) oneMin = tmp2;
		if (setMin > tmp2 * 6) setMin = tmp2 * 6;
	}

	int q = n / 6;
	int r = n % 6;

	if ((r * oneMin) > setMin) sum = (q + 1) * setMin;
	else sum = q * setMin + r * oneMin;

	printf("%d",sum);
	return 0;
}

 

반응형