[BOJ] 1712. 손익분기점

Jimeaning·2023년 4월 11일
0

코딩테스트

목록 보기
76/143

Python3

문제

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

키워드

  • 구현

문제 풀이

문제 요구사항

  • A만원의 고정 비용과 B만원의 가변 비용이 든다.
  • 노트북 가격이 C만원으로 책정되었다.
  • 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다.
  • 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.

변수 및 함수 설명

a: 고정비용
b: 가변비용
c: 가격

로직

  • 가변비용인 b가 가격인 c보다 더 크거나 같다면, 아무리 생산대수를 늘려도 이익이 나지 않는다.
    파는 가격보다 생산하는 가격이 더 큰 셈
    따라서 b >= c일 때는 -1을 반환한다.

  • 총 수입(판매비용)이 총 비용(=고정비용+가변비용)과 같아지는 식은 다음과 같다.

    c * n = a + b * n

이 식을 n으로 정리하면, n = a//(b-c) 가 된다.

즉, 총 수입과 총 비용이 같아질 때는 a//(b-c)인 것이다.
손익분기점을 넘기는 시점을 알기 위해서는 a//(b-c)+1을 해주면 된다.

최종 코드

import sys

a, b, c = map(int, sys.stdin.readline().split())

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

피드백

처음에 반복문을 사용해서 풀었더니 시간초과가 났다. a, b, c는 21억 이하의 자연수이므로 더 효율적인 코드가 필요했다. 생산대수를 기준으로 식을 세우고, 이익이 있으려면 가변비용이 가격보다 많으면 안 됐었다.

profile
I mean

0개의 댓글