알고리즘/백준

<백준> 1712번 손익분기점 C++ 문제풀이

Han_5ung 2021. 2. 2. 00:48

물건 판매에 대한 손익분기점을 계산하는 문제

반복문을 사용하면 쉽게 해결이 가능하지 않을까? 라는 생각으로 접근할 확률이 굉장히 큰 문제가 아닌가 싶다.

허나 반복문을 사용하였을 때 각 A B C 값의 간격이 커지게 된다면 시간 초과에 걸릴 수 있다.

고정 비용, 가변 비용, 판매 가격을 고려하는 수학적으로 계산해야 한다.

 

풀이

#include <iostream>
using namespace std;

int main()
{
	int a, b, c,ans;
	cin >> a >> b >> c; //고정 비용, 가변 비용, 판매 금액 입력

	if (b >= c)
		cout << "-1";   //가변 비용이 판매 비용보다 크거나 같다면 -1을 출력
	else {
		ans = a / (c - b) + 1;
		cout << ans;
	}
	
}

반복문을 사용하게 된다면 보통 손익분기점을 작은 값부터 조건에 맞는 값까지 하나씩 다 돌리도록 코딩을 했을 것이라 생각된다.

그렇게 된다면 값이 커졌을 때 0 ~ N 까지 하나하나 값을 확인하게 되느라 시간 초과에 걸리는 것.

이를 해결 하기 위해서 한 번에 처리는 불가능 한 지 살펴볼 필요가 있다.

먼저 가변 비용 즉 물건을 생산하는데 드는 비용이 판매 비용보다 더 크다면 당연히 수익이 발생하지 않기 때문에 -1로 예외 처리를 하였고


수익이 발생되는 부분을 알아보기 위해서

판매 비용에서 가변 비용을 뺀 이득 값을 고정 비용 나누었다.

비유를 한다면

노트북 가격이 170만원이고 가변 비용을 70, 고정 비용을 1000으로 입력을 하였다면

노트북 가격 (170) 에서 가변 비용(70)을 뺀다면 

노트북 1대를 팔았을 때 100만원이라는 차익이 생기게 된다.

2대를 팔면 200만원, 3대를 팔면 300만원...

이 부분을 이용하여

고정비용과 차익을 나누게 된다면 10이라는 값이 나오는데

여기서 10은 차익이 100만원인 노트북을 10대 팔아야 고정비용을 커버치게 된다는 뜻.

그렇다면 여기에서 나온 10이라는 값에 +1을 하게 된다면?

이제부터는 본인이 노트북 생산에 투자한 금액을 넘어선 이익이 발생하는 부분 즉 손익분기점을 구할 수 있게 된다.

 


www.acmicpc.net/problem/1712

 

1712번: 손익분기점

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

www.acmicpc.net