백준 1712번 문제 풀기
https://www.acmicpc.net/problem/1712
문제 설명
문제
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 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을 출력한다.
예제 입력 1
|
예제 출력 1
|
1000 70 170
|
11
|
예제 입력 2
|
예제 출력 2
|
3 2 1
|
-1
|
예제 입력 3
|
예제 출력 3
|
2100000000 9 10 |
2100000001
|
알고리즘 및 설명
A만원의 고정비용, B만원의 가변비용, C만원이 상품의 가격이라고 하자. n개의 물건이 팔린다고 가정하면 비용은 (A + B* n)만원이 되고 수입은 (C*n)만원이 된다. 손익분기점이란, 최초로 수입이 비용보다 많아지는 지점이므로 A+B*n < C*n이 되는 최초의 n을 구하면 된다.
위의 식은 A < n*(C-B)로 나타낼 수 있으며 A은 자연수이므로 C < = B인 상황에서는 손익분기점이 발생하지 않는다.
따라서 C < =B인 상황에는 -1을 출력하면 되고 C > B인 상황에는 A/(C-B) < n인 가장 작은 n을 출력하면 된다.
파이썬 math 라이브러리의 floor를 활용하였다. floor함수는 숫자를 내림한 값을 반환하는데, 그냥 (A/(C-B))를 내림하면 (A/(C-B))보다 작은 값이 n이 되므로 손익분기점이 아니다. 따라서 1을 더해준 값에 floor함수를 씌워 계산하면 된다.
import math
A, B, C = map(int, input().split())
if C > B:
n = math.floor(A/(C-B) + 1)
else:
n = -1
print(n)
'파이썬(Python) > 백준(Baekjoon) 문제 풀이' 카테고리의 다른 글
[백준, python 파이썬] 2447번 : 별찍기-10(재귀) (0) | 2022.03.31 |
---|---|
[백준, python 파이썬] 2292번 : 벌집(기본 수학1) (0) | 2022.03.30 |
[백준, python 파이썬] 1316번 : 그룹 단어 체커(문자열) (0) | 2022.03.27 |
[백준, python 파이썬] 2941번 : 크로아티아 알파벳(문자열) (0) | 2022.03.27 |
[백준, python 파이썬] 5622번 : 다이얼(문자열) (0) | 2022.03.23 |