본문 바로가기
작업/Problem Solving

백준 1712(손익분기점) 파이썬(python) 해결

728x90

문제

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


예를 들어 A=1,000, B=70이라고 하자.

 


이 경우 노트북을 한 대 생산하는 데는 총 1,070만 원이 들며,
열 대 생산하는 데는 총 1,700만 원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다.


일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총수입(판매비용)이
총비용(=고정비용+가변비용) 보다 많아지게 된다.


최초로 총수입이 총비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A, B, C가 빈칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다.

출력

첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다.
손익분기점이 존재하지 않으면 -1을 출력한다.

 

 


코드

 

#백준 1712
value = list(map(int, input().split()))

if value[1] >= value[2]:
    print(-1)
else:
    cnt = int(value[0]/(value[2]-value[1])+1)
    print(cnt)

 

코드를 간단하게 만드는 것에 도움이 많이 된 문제라 생각합니다.
출력이 일치한 코드를 만들어 제출했더니 '시간 초과'로 인해 통과하지 못했어요 ㅠ.
저의 처리 과정이 답안이 요구하는 과정보다 오래 걸리고 복잡하기 때문이었겠죠?


시간 초과가 된 코드는 "A(고정비용) + B(가변비용) x 판매대수" 값과
"C(판매 가격) x 판매대수" 값을 따로 구하여 손익분기점이 발생하는 지점의 판매대수 값을 구했습니다.


위에처럼 만들다 보니 판매대수에 대한 값이 정확하지 않아 반복문을 사용하여 값을 구했습니다.
이게 시간 초과의 원인이었던 것입니다.

 


 

문제의 핵심은 "C x D(판매대수) > A + B x D"가 성립할 때 손익분기점이 발생한다는 것입니다.



 해당 식을 이항의 과정을 거치면
" CD - BD > A" -> "(C-B)D > A"의 식이 성립하며 "D > A/(C-B)"에 도달합니다.


이익이 발생하기 위한 D의 값은 '고정비용/(판매 가격-가변비용)'의 값보다 크면 됩니다.



문제에 제시된 값으로 결과를 구해보겠습니다.


A = 1000, B = 70, C = 170
D > 1000/(170-70)   ->   D > 10
D(판매대수)의 값이 11이면 손익분기점이 발생한다는 의미입니다.
따라서 출력 결과는 11이 나오게 됩니다.



예시처럼 값이 딱 맞게 떨어지는 경우나, 나누기 결과로 소수점이 등장하는 경우가 있습니다.
하지만 무엇이든지 나타난 정수 값보다 1만 크다면 손익분기점이 됩니다.

 


크거나 같다 (>=)가 아닌 크다(>)이기 때문입니다.



손익분기점이 나타나지 않는다는 의미는 많이 판매를 해도 손해가 되는 값이라는 뜻입니다.
그 이유는 만들면서 발생한 비용인 가변비용이 판매비용보다 클 경우 발생합니다.


B = 120, C = 70이라고 가정한다면
1000/(70-120) = 1000/-50 = -20. 음수가 등장하면서 손해가 발생하는 것입니다.


B와 C의 값이 같으면 결과는 0이기 때문에 이익이라고 판단할 수 없어서 출력은 -1로 통합합니다.

 

-끝-

 

 

 

 

 

728x90