PS (C, C++)

[백준/C & C++] 1712 손익분기점

최연재 2022. 8. 26. 01:32

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

 

1712번: 손익분기점

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와

www.acmicpc.net

코드 (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문을 도는 것은 분명 시간초과가 날 것이라 예상해서 바로 방향을 위와 같이 수정했다.