문제풀이
[C언어] 백준 1712 손익분기점
어굴애
2021. 12. 24. 15:59
#include <stdio.h>
int main(void)
{
int fixedCost, variableCost, price, q = -1;
scanf("%d %d %d", &fixedCost, &variableCost, &price);
if(variableCost < price)
q = fixedCost / (price - variableCost) + 1;
printf("%d", q);
return 0;
}
- 두 번의 수정과정을 거친 코드다
- 첫번째
while문으로 fixedCost + variableCost * q > price * q 일때마다 q를 증가시켜 문제를 풀었으나 시간초과로 실패함 - 두번째
조건문이 잘못되었음
if (variableCost > price) q = -1;
else q = fixedCost / (price - variableCost) + 1; --> division by zero (runtime error)- 다시 생각해보면,
상품의 가격이 가변비용과 일치하는 경우 고정비용이 0이든 뭐든 문제에서 요구하는 손익분기점은 존재하지 않는다.
이익자체가 날 수 없기 때문이다.
따라서 variableCost <= price가 아닌 variableCost < price일때만 q를 구하도록 조건을 수정해야 한다.
- 다시 생각해보면,
- 첫번째
- 손익분기점의 일반적인 정의에 따라 총매출 = 총비용이 되는 지점을 구했는데,
문제를 다시 읽어보니 여기서는 총매출이 총비용을 초과하는 지점이다.- fixedCost + variableCost * q > price * q
- q - fixedCost / (price - variableCost) > 0을 만족해야 한다.
- 다시 풀어 쓰면 q = fixedCost / (price - variableCost)이 되는 q의 값보다 항상 1이 큰 값이 손익분기점이 된다.