※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 25935번 문제인 Lemonade Stand이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/25935 

 

25935번: Lemonade Stand

The first input line will have a single integer, n (1 ≤ n ≤ 100), the number of cases to process. The first line of each test case will have three space-separated positive integers: d (1 ≤ d ≤ 1000), the number of days you'll run the lemonade stand

www.acmicpc.net

주어진 기간동안 레모네이드를 만들어 팔 때 재료를 구입하기 위해 사용해야하는 최소 비용을 구하는 문제이다.

 

k일차의 레모네이드를 만들 때 필요한 레몬의 구입가는 1일차부터 k일차까지 가운데 가장 레몬이 싼 날에 사두는 것으로 최소가 되게 할 수 있다. 이는 설탕도 마찬가지지만, 설탕의 사용 단위는 1온스이고 구입 단위는 5파운드(80온스)로 둘의 단위가 다른 점에 유의하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

void solve() {
	int ans = 0;
	int D, unitL, unitS; cin >> D >> unitL >> unitS;
	int priceL = 1000000007, priceS = 1000000007;
	int leftS = 0;
	while (D--) {
		int cups, pL, pS; cin >> cups >> pL >> pS;
		
		priceL = min(priceL, pL);
		ans += priceL * unitL * cups;
		
		priceS = min(priceS, pS);
		if (unitS * cups < leftS) leftS -= unitS * cups;
		else {
			int needS = unitS * cups - leftS;
			if (needS % 80) {
				ans += (needS / 80 + 1) * priceS;
				leftS = 80 - needS % 80;
			}
			else {
				ans += needS / 80 * priceS;
				leftS = 0;
			}
		}
	}

	cout << ans << '\n';
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int T; cin >> T;
	while (T--) solve();
}
728x90

+ Recent posts