티스토리 뷰
[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)이지만 이 식은 손익분기점인 때가 되고 최초로 이익이 발생하는 시점은 이 식에서 보다 판매량을 하나 더 더해야 한다.
그런데 파이썬에서 이 식을 코드로 작성하면 실수 형태로 출력이 된다. 그렇기 때문에 정수로 출력하기 위해서 // 연산자로 나눗셈의 몫을 구할 수 있도록 코드를 작성하였다.
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 알고리즘 2839 [파이썬] : 설탕 배달 (2) | 2020.07.09 |
---|---|
백준 1316번 [파이썬 알고리즘] 그룹 단어 체커 (8) | 2020.07.08 |
백준 2941번 [파이썬] 크로아티아 알파벳 : replace 함수 (4) | 2020.07.07 |