고정비용 A, 생산비용 B, 판매비용 C일 때 최초로 이득이 나는 손익분기점은 언제인가?
사실 이 문제는 이 전에 풀었던 문제인 달팽이 문제가 없었다면 풀지 못하였을 것이다. 이런 류의 문제는 항상 while을 이용해서 내가 원하는 순간이 올 때까지 반복하며 풀어왔기에 수학적 수식을 이용해서 푸는 것이 조금은 어색했다. 수학적 수식으로 나타내기 위해서 x라는 임의 변수를 두어 방정식을 세우고 그 흐름에 맞추어 코딩을 하여 문제를 해결하였다.
예를 들어서 A = 1000, B = 70, C = 170인 경우를 생각하자
1000 + 70X = 170X 가 될 것이고 식을 정리하면
-100X = -1000
X = 10 > 즉 10개를 팔았을 때 이후부터 이득 구간을 창출할 수 있는 것이다.
굉장히 많은 시행착오를 거쳤다. 처음에는 단순하게 반복문을 구성하여 시간초과, 두 번째부터는 나누는 수가 0이었기 때문에 런타임에러가 발생하였다. 이를 해결하기 위해 조건문을 통해 0으로 나누는 일이 없도록 코드를 만들어 코드를 올바르게 수정하였다.
수식 한 줄이 수천 수억번의 비효율적 반복하는 일이 없도록 해줄 수 있다.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int Fix_Cost = 0;
int etc_Cost = 0;
int Sell_Cost = 0;
scanf("%d %d %d", &Fix_Cost, &etc_Cost, &Sell_Cost);
if (etc_Cost >= Sell_Cost)
{
printf("-1");
return 0;
}
printf("%d", (Fix_Cost / (Sell_Cost - etc_Cost))+1);
}