백준알고리즘 1712번 : 손익분기점 [파이썬]

2021. 4. 2. 15:07

☞    문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.

☞    틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.


문제

월드 전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 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번 문제의 경우 정답률이 23%이다. 필자도 틀렸다. 이 문제는 시간제한을 통과하는 것이 핵심이다.  처음 필자의 접근법은 t번 돌면서 s = (고정비용+가변비용 * t) - (가격 *  t)로 s의 값이 0보다 작아지면 멈추는 형식으로 접근했으며 손익분기점이 존재하지 않으면 -1을 출력하는 부분은 가변비용이 가격보다 높거나 같다면 손익분기점이 없으므로 -1을 출력하는 부분을 작성해줬다. 하지만 이 경우 시간제한을 통과하지 못했다. 때문에 반복문을 사용할 수 없다는 것을 알고 반복문 없이 답을 구하는 방법을 생각했다. 


가변비용, 가격, 순이익은 t번 돌때마다 일정한 가격으로 올라간다.

가변 비용 -> 70 140 210 280 350 420...

가격 -> 170 340 510 680 850 1020...

순이익 -> 100 200 300 400 500 600...

순이익이 고정비용을 넘으면 그 부분이 손익분기점이 된다.

때문에 이를 정리하면 고정비용/(가격-가변비용)이 된다.  

그리고 코드에서 +1을 더해주는 이유는 손익분기점을 만족하는 첫 번째이기 때문이다.


코드

반복문을 이용하여 계산한 방법

A,B,C = list(map(int, input().split()))

t = 0
s = 0
if B > C:
    t = -1
else :
    while s >= 0:
        t += 1
        s = A+(B*t) - C * t

print(t)

반복문 없이 계산한 방법

A,B,C = list(map(int, input().split()))
if B >= C :
  print(-1)
else :
  print(int(A/(C-B) +1))

참고문헌

 

손익분기점 분석 방법! 손익분기점 개념과 계산 공식 및 손익분기점 그래프 이해와 손익분기점 B

본 글은 손익분기점 BEP 개념과 손익분기점 계산 공식과 그래프를 통해 손익분기점을 쉽게 설명하고 있으며 손익분기점 BEP 분석 시 참고사항에 대해 설명합니다. 손익분기점 BEP(Break-Even Point)는

www.econowide.com

 

백준 1712번 : 손익분기점

BOJ

sihyungyou.github.io