https://www.acmicpc.net/problem/1712
코드 (C)
#include <stdio.h>
int main()
{
long long a, b, c;
scanf("%lld %lld %lld", &a, &b, &c);
if (b >= c) printf("-1");
else printf("%lld", 1 + (a / (c - b)));
return 0;
}
코드 (C++)
#include <iostream>
using namespace std;
int main()
{
long long a, b, c; // a는 고정비용, b는 가변비용, c는 가격
cin >> a >> b >> c;
if (b>=c) cout << "-1";
else cout << 1+(a/(c-b));
return 0;
}
코드설명
고정비용 a, 가변비용 b, 가격 c를 입력받는다.
만약 가변비용이 가격보다 같거나 크다면 절대로 이익이 발생할 수 없다.
(예를 들어 가변비용이 10인데 가격이 5라면 한 대 생산할 때마다 5만큼의 손해를 보고 손해는 계속 늘어난다 .)
따라서 가변비용이 가격보다 크거나 같은 경우에는 바로 -1을 출력한다.
만약 가변비용이 가격보다 작다면 이익은 분명히 발생한다.
가격에서 가변비용을 뺀 값은 이익이기 때문에 고정비용에서 이 값을 나눠서 이익 == 고정비용이 되는 날을 구한다. 손익분기점은 최초로 이익이 발생하는 날이기 때문에 구한 날에 1을 더해 결과를 출력한다.
느낀 점
처음에는 어떻게 문제를 풀어야 할지 예상하지 못했다. 시간 제한도 다른 문제들에 비해 타이트한 편이라 이익이 발생하는 날을 구하는 날이 될 때까지 while문을 도는 것은 분명 시간초과가 날 것이라 예상해서 바로 방향을 위와 같이 수정했다.
'PS (C, C++)' 카테고리의 다른 글
[백준/C & C++] 1037 약수 (0) | 2022.08.26 |
---|---|
[백준/C & C++] 1330 두 수 비교하기 (0) | 2022.08.26 |
[백준/C & C++] 1773 폭죽쇼 (0) | 2022.08.26 |
[백준/C & C++] 1427 소트인사이드 (0) | 2022.08.26 |
[백준/C & C++] 1453 피시방 알바 (0) | 2022.08.26 |