백준 1712번

신형석·2022년 2월 28일
0

알고리즘 풀이

목록 보기
8/41

백준 1712번은 손익분기점에 대한 문제이다.

처음에는 for문을 사용해서 접근하려고 했지만, int 자체의 제한에 걸린 것인지, 코드를 잘못 짠 것인지 제대로 나오지 않았다. 그래서 문제를 공식화해보기로 했다.

고정 비용을 static_cost, 가변 비용을 change_cost, 가격을 price로 본 후, 손익분기점이 나는 n을 구하려면

price n > static_cost + change_cost n

에서의 최소값의 n을 구하면 된다. 식을 이리저리 옮기면서 정리해보면

n > static_cost / (price - change_cost)

가 된다. 만약 여기서

price - change_cost가 음수라면, 즉 price가 change_cost보다 작다면 부등호의 방향이 바뀌므로 식이 성립하지 않는다. 그러므로 -1을 출력해준다. 그렇지 않다면, c는 기본적으로 나눗셈을 할 때 버림을 하기 때문에, 이 값에 1을 더한 후 출력해준다. 그렇게 나온 코드는 다음과 같다:

#include <stdio.h>

int main(void) {
	int static_cost, change_cost, price;
	scanf("%d %d %d", &static_cost, &change_cost, &price);
	if (price <= change_cost) { printf("-1"); return 0; }
	else { printf("%d", static_cost / (price - change_cost) + 1); }
	return 0;	
}

0개의 댓글