본문 바로가기
코딩과 알고리즘

백준 1712 손익분기점 풀이

백준문제 1712번 손익분기점 문제 풀이입니다 

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

 

1712번: 손익분기점

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로

www.acmicpc.net

손익분기점이란 제품제작에 필요한 비용중

1회성으로 지출이 끝나는 "고정비용"과
각 제품마다 지출되는 "변동비용"을 계산하여
제품을 몇개이상 판매했을 때부터 이익이 되는지를 계산하는 방법입니다.
물론 월세나 장비 노후 유지보수 비용은 계산에서 제외되겠지요.

이를테면 노트북을 제조하는데 필요한 초기 장비건설 비용이 1000만원이고,
노트북 1대를 제조하는데 필요한 비용이 70만원인데,
노트북 1대를 70만원 또는 그 이하로 판매한다면 그 회사는 어느 순간 망하고 말것입니다.
어떤 경우에도 이익을 볼 수가 없으니까요.

반면 노트북을 170만원에 판매한다면, 10대를 판매하면 본전을 뽑고 11대를 판매하면 100만원의 이익을 볼 겁니다.
이 이익을 보는 판매 대수가 몇대인지를 산출하는 것이 이번 문제의 핵심이라 할 수 있겠습니다.

입력값으로 3개의 수치가 주어집니다.

첫번째 수치는 공장설비 시설비용이라 볼 수 있는 1회성 고정비용이고,
두번째 수치는 1대당 생산비용이고,
세번째 수치는 1대당 얼마에 판매할 것인지인데,

풀이에 대한 이해는 아래와 같습니다.

주어진 3개의 수치를 각각 A, B, C라고 볼때,

1대당 마진, 곧 판매이익은 C - B 가 됩니다.
판매가 170만원 - 생산비 70만원 = 100만원이 이익이 되는 것이지요.

우선 이 1대당 이익비용이 0원이하라면 어떤 경우라도 손익분기점에 도달할 수 없습니다.
초기비용 1000만원을 줄일 방법이 없기 때문에 -1을 출력하고 끝내버립니다.

만약 1만원이라도 이익이 남는다면, 노트북 1000대를 판매하면 본전에 도달하게 되고,
1001대를 판매하는 순간 이익을 보게 됩니다.

초기 비용 / 마진비용 = 손익분기 판매대수가 되는 것이지요.

C++ 에서 정수끼리의 계산은 무조건 소숫점을 버리기 때문에
초기비용 / 마진비용의 대수를 계산한 다음, 1을 더해주면
최종적으로 이익을 볼 수 있는 판매대수가 산출됩니다.

결과소스는 아래와 같지요 :)

#include <iostream>

using namespace std;

int main() {

	long a, b, c;
	cin >> a >> b >> c;

	long margin = c - b;

	if(margin <= 0 )cout << -1 << "\n";
	else
	{
		long n = a/margin;
		n++;	
		cout << n;
	}
	getchar(); getchar();
	return 0;
}

 

필요하신 분에게 도움이 되실지 모르겠군요.

백준문제 풀이를 오랜만에 하다 보니 랭킹이 약간 떨어진걸 확인했군요.
하지만 다시 탈환하러 갑니다 :)

읽어주셔서 감사합니다.