[백준] 1712번: 손익분기점 [C언어]

Boknami·2022년 2월 8일
0

백준문제풀이

목록 보기
14/45

📑문제

고정비용 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);
}

0개의 댓글