- C언어 : 기본수학1(1)
01.JUL.2022
노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며,
한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 노트북
가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총
수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다
많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C가 주어졌을 때,
손익분기점을 구하는 프로그램을 작성하시오.
// 손익분기점 구하기
// a(고정비용) + b(가변비용) x result(판매량) < c(상품 가격) x result(판매량)
// ---> a+b*result < c*result
// ---> a < c*result - b*result
// ---> a < (c-b)*result
// ---> a / (c-b) < result
// ---> result = a / (c-b) +1 (이익 발생)
#include <stdio.h>
int main() {
int a, b, c, result = 0; // 문제 조건 : 21억 이하 자연수
scanf("%d %d %d", &a, &b, &c);
if (b >= c) // 손익 분기점이 존재하지 않는 경우
printf("-1");
else { // 손이 분기점 출력
result = a / (c - b) + 1;
printf("%d", result);
}
}
문제를 보고 식을 세운다면
a = 고정비용(임대료, 보험료 등)
b = 가변비용(제작 비용)
c = 노트북 가격
이라고 할 수 있다. 여기서 구하고자 하는 건 손익분기점으로, a와 b를 합친 지출보다 c인 수익이 더 큰 지점을 구해야 한다. 쉽게 말해 노트북 몇 개를 팔아야 이익이 날까?? 를 구해야 하는데, 이 개수를 result라고 했을 때, 제작 비용 x 개수, 노트북 가격 x 개수를 해주면
a + b * result < c * result
식을 세울 수 있다. 이제 result를 구해야 하는데, 문제에서 손익분기점이 존재하지 않으면 -1 을 출력하라고 나와 있다. 위의 식에서부터 손익분기점이 존재하지 않는 경우를 보자.
--> a < c*result - b*result
--> a < (c-b) * result
--> a / (c-b) < result
처음 식에서부터 오른쪽에 result만 남기기 위해 식을 바꿔보았다.
우리 찐 문과생들도 이 정도는 할 수 있쥬??🤓
아 그냥 그렇다 쳐요
아무튼 저 마지막 식 a / (c-b)에 문제에서 제시한 가격을 대입해 보면 덜 헷갈린다.
1000 / (170-70) == 10 , 이 값보다 크려면 result는 +1한 값이어야 한다.
그래서 result = a / (c-b) +1 식으로 구할 수 있다.
이때 a / (c-b)에서 b가 c보다 크거나 같은 경우가 바로 손익분기점이 존재하지 않는 경우다.
손익분기점이 존재하지 않는 경우, 존재할 경우 그 값을 도출하는 식까지 모두 세웠으니 조건문으로 출려하면 된다.