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

 

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

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

 

26553번: Work

You own a company that hires painters to paint houses. You can hire as many painters as you want, but for every painter you hire, you have to pay X dollars (independent of how long the painter works on the house). In addition, you have to pay a penalty of

www.acmicpc.net

고용할 사람의 수를 N이라 하면 지출하게 될 비용은 NX+KP/N으로 계산해낼 수 있다.

 

위 값은 N이 양수인 경우 N이 증가함에 따라 그 값이 단조감소하다가 단조증가함을 관찰하자.

 

이를 이용해 값이 증가하는 지점을 찾을 때까지 N의 값을 1부터 1씩 증가시켜보는 것으로 문제를 해결할 수 있다.

 

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

#include <iostream>
using namespace std;
typedef long double ld;

int T;

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

	cout << fixed;
	cout.precision(3);

	cin >> T;
	while (T--) {
		int N = 1;
		ld ans = 2000000007;
		ld K, P, X; cin >> K >> P >> X;
		
		while (1) {
			ld val = X * N + (K * P) / N;
			if (val < ans) ans = val, N++;
			else break;
		}

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

'BOJ' 카테고리의 다른 글

[BOJ 6903 // C++] Trident  (0) 2022.12.23
[BOJ 26736 // C++] Wynik meczu  (0) 2022.12.23
[BOJ 5353 // C++] Open Intervals  (0) 2022.12.23
[BOJ 21771 // C++] 가희야 거기서 자는 거 아니야  (0) 2022.12.23
[BOJ 12791 // C++] Starman  (0) 2022.12.23

+ Recent posts