Study/백준코테

4. 백준 코딩테스트 1712번 문제 python

코딩 잘 할거얌:) 2021. 9. 16. 00:04
반응형

이번에는 기본 수학 1에 관련된 문제에서 제목이 '손익분기점'으로 되어있는 문제를 풀었다. 정답률이 25%대이다.

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

 

1712번: 손익분기점

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

www.acmicpc.net

 

바로 코딩에 들어가기 전, 수식을 구해보자.

고정 가격은 a

가변 가격은 b

물품 가격은 c

판매대수를 n이라고 한다면, 손익분기점에 관련된 식은 다음과 같다.

$$ a+b*n < c*n $$

 

이 부등호를 만족하는 n의 최솟값을 찾는 문제라고 보면 된다.

 

손익분기점이 존재하지 않는 경우부터 고려하자.

$$c -(a/n+b)>0$$

항상 부등호가 성립하지 않는 경우, 즉 좌변이 항상 0보다 작거나 같을 때 일 것이다. 그리고 n이 점점 커지면 커질수록 a/n은 0으로 수렴하게 되므로 결국

$$ c >b $$

가 된다. 그러니 손익분기점이 존재하기 위해선 물품 가격은 반드시 가변 가격보다 커야 한다는 결론이 나오게 된다.

 

손익분기점을 구해보자.

두 번째 수식을 판매대수에 관련하여 정리해보자. 

$$n>a/(c-b)$$

따라서 이 부등호를 만족하는 n의 최솟값을 찾으면 된다. 여기서 한 발 더 나아가서 부등호식을 등호식으로 바꾸게 되면 식이 뜻하는 의미가 약간 달라진다. 바로 수익과 지출이 같아지는 n값이 구해진다.

$$n=a/(c-b)$$

판매대수 n은 반드시 자연수 이어야 하므로 소수점은 버림을 한다. 수익과 지출이 역전되는, 손익분기점을 지나는 것은 판매대수 결괏값에 1을 더함으로써 구할 수 있다.

이제 코딩해보자.

 

#값을 받아서 리스트에 저장한다.
receive_input = input().split()

#고정지출 선언
immutable_coast = int(receive_input[0])

#가변지출 선언
mutable_coast = int(receive_input[1])

#판매금액 선언
price = int(receive_input[2])

#이윤이 남기 시작하는 최소 판매대수
break_even_point = 0

#손익분기점이 존재하는 경우
if mutable_coast < price :

    #이윤이 남기 시작하는 최소 판매대수에 관련한 식
    break_even_point = (immutable_coast//(price - mutable_coast))+1
    print(break_even_point)
    
#손익분기점이 존재하지 않는 경우
else:
    print(-1)

 

정답이다!

다른 분들의 결과와 비교해도 비슷하게 나왔다. 간혹 시간과 메모리를 많이 사용하신 분이 있는데, 그 경우에는 

$$ c-(a/n+b)>0 $$ 을 만족하는 n을 반복문으로 구할 때 발생한다. 원하는 결괏값을 중심으로 식을 최대한 정리해서 코딩하도록 하자.

 

결과가 거의 동일하다.

 

728x90