티스토리 뷰

반응형

 

[Python] 백준 알고리즘 온라인 저지 1712번 : 손익분기점

 

Python3 코드

a,b,c = map(int,input().split())

if b >= c:  # 가변비용이 노트북 가격보다 같거나 크면
    print(-1)
else:
    print(a//(c-b)+1)

 

 

Python3 코드 풀이

 

1. 문제를 푸는 방법

이 문제는 최초로 이익이 발생하는 시점의 판매량을 출력하고 손익분기점이 존재하지 않으면 -1을 출력하는 문제이다. 손익분기점 계산은 간단한 수학식으로 풀 수 있다.

 

2. 총수입 = 고정비용 + 가변비용 

위 식을 문제에서 주어진 알파벳을 이용하고 판매량을 N이라고 한다면 C*N = A + B*N으로 나타낼 수 있다. 이 식을 판매량인 N을 구하는 식으로 바꾸면 N= A/(C-B)가 된다. 이 식을 그대로 코드로 작성해서 문제를 풀었다.

 

 

 

 

3. if조건식으로 손익분기점이 존재하지 않을 때 -1을 출력한다.

a,b,c = map(int,input().split())

if b >= c:  # 가변비용이 노트북 가격보다 같거나 크면
    print(-1)

입력받는 수는 순서대로 a=고정비용, b=가변비용, c=노트북 가격이다. 

 

손익분기점이 존재하지 않는 때는 고정비용과는 상관이 없다. 그런데 가변비용이 노트북 가격보다 크면 손익분기점은 존재하지 않는다. 총수입을 구하는 식 C*N = A + B*N을 다시 보면 고정비용 A가 아무리 크더라도 노트북 가격 C가 가변비용 B보다 크다면 판매량을 늘려서 손익분기점을 넘길 수 있다. 즉, B가 C보다 큰 경우에 손익분기점은 존재하지 않는다.

 

4. 손익분기점이 존재하는 경우 최초 이익이 발생하는 시점의 판매량을 출력한다.

else:
    print(a//(c-b)+1)

손익분기점이 발생하는 때의 판매량을 식으로 나타내면 N= A/(C-B)이지만 이 식은 손익분기점인 때가 되고 최초로 이익이 발생하는 시점은 이 식에서 보다 판매량을 하나 더 더해야 한다.

 

그런데 파이썬에서 이 식을 코드로 작성하면 실수 형태로 출력이 된다. 그렇기 때문에 정수로 출력하기 위해서 // 연산자로 나눗셈의 몫을 구할 수 있도록 코드를 작성하였다.

 

반응형
댓글
반응형