https://www.acmicpc.net/problem/1712
1712번: 손익분기점
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와
www.acmicpc.net
• 문제
월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다.
예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만 원이 들며, 열 대 생산하는 데는 총 1,700만 원이 든다.
노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.
A, B, C가 주어졌을 때, 손익분기점을 구하는 프로그램을 작성하시오.
• 입력
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다.
• 출력
첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다.
• 예제 입력1
1000 70 170 |
• 예제 출력1
1000 70 170 |
• 예제 입력2
3 2 1 |
• 예제 출력2
-1 |
• 예제 입력3
2100000000 9 10 |
• 예제 출력3
2100000001 |
• 풀이
#include <stdio.h>
int BreakEvenPoint(int cost_A, int cost_B, int cost_C) {
int result;
if (cost_B >= cost_C) // 가변 비용이 제품 가격보다 비싸거나 같으면 손익분기점 없음
return -1;
result = cost_A / (cost_C - cost_B) + 1;
return result;
}
int main() {
int cost_A; // 고정비용
int cost_B; // 가변비용
int cost_C; // 제품가격
scanf_s("%d %d %d", &cost_A, &cost_B, &cost_C);
printf("%d", BreakEvenPoint(cost_A, cost_B, cost_C));
return 0;
}
손익분기점을 넘기 위한 조건은 '고정비용 + 가변비용 * 판매수량 < 제품 가격 * 판매수량'을 만족할 때이다.
고정비용을 A, 가변비용을 B, 제품 가격을 C, 판매수량을 X라고 한다면 'A + B * X < C * X'라고 할 수 있다.
이러한 손익분기점을 넘기기 위한 조건문과 반복문을 사용해서 구할 수도 있겠지만, 반복문을 사용하게 된다면 숫자가 커지게 되면 시간제한에 걸려서 오답처리가 된다. 그렇기에 반복문을 사용하지 않고 손익분기점을 계산하는 방법을 생각해야 했다.
그래서 생각한 방법이 고정비용에서 순수익을 나누는 것이다. 순수익은 '제품 가격 - 가변비용'으로, 예를 들어서 노트북을 만들기 위한 고정비용이 1,000만 원이고, 노트북의 판매 가격이 170만 원, 제품을 만드는데 들어가는 가변비용이 70만 원이라고 한다면, 순수익은 100만 원이 된다. 고정비용 1,000만 원에서 순수익인 100만 원을 나누면 10이 나오는데 이것은 '노트북을 10개를 판매를 했을 때, 제품 생산 초기에 사용된 고정비용 1,000만 원을 전부 회수하고 이후에 판매될 때부터 손익분기점을 넘긴다'라는 뜻이다.
위의 설명을 식으로 풀어서 쓰면,
'손익분기점 = 고정비용 / (판매 가격 - 가변비용) + 1'
'손익분기점 = A / (C - B) +1'
이라는 식이 나오게 된다. result 변수에 해당 식을 넣어준 다음 출력하면 손익분기점이 나오게 된다.
그리고 손익분기점이 없으면 -1을 출력해야 하는데, 손익분기점이 없다는 것은 제품을 아무리 팔아봤자 흑자가 나오지 않는다는 얘기다. 가변비용이 판매 가격과 같거나, 가변비용이 판매 가격보다 낮을 때 손익분기점이 없다.
10만 원짜리 물건을 만드는데 20만 원의 가변비용이 든다면 적자만 생길 뿐, 흑자가 생기지 않으니 당연하다.
'Algorithm > Baek-Joon' 카테고리의 다른 글
[백준] 1463번: 1로 만들기 - Python (0) | 2024.04.08 |
---|---|
[백준 알고리즘] 2480번: 주사위 세개 (C) (0) | 2022.06.29 |
[백준 알고리즘] 10250번: ACM 호텔 (C) (0) | 2022.05.24 |
[백준 알고리즘] 2292번: 벌집 (C) (0) | 2022.05.18 |
[백준 알고리즘] 2798번: 블랙잭 (C) (0) | 2022.05.17 |