[BOJ] 1712_손익분기점

gogori6565·2022년 7월 30일
0
post-custom-banner

문제
일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다.

A : 고정비용, B : 가변비용, C : 노트북 가격 이라고 할 때, 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력하라.


풀이
수학 문제다. 방정식을 이용해 풀면 간단하다.
우리가 고려할 사항은 2가지 이다.
1. 손익분기점이 발생하는 판매량?
2. 손익분기점이 발생하지 않는 경우?

1. 손익분기점이 발생하는 판매량

a : 고정비용, b : 가변비용, c : 노트북 가격, x(미지수) : 손익분기점이 발생하는 판매량
이라고 하자.

일단, 총 수입 = 총 비용 이 같아지는 시점의 x를 구하자.
방정식을 세워보자. x는 판매량이 늘어날 수록 변하는 우리가 구하고 싶은 미지수이다.
총 수입 = cx
총 비용 = a + bx

cx = a + bx

이 방정식을 풀어보면,

cx - bx = a
(c-b)x = a
x = a/(c-b)

x = a/(c-b) 이다.
즉, 여기서 x는 총 수입과 총 비용이 같아지는. 다시말해 내 영업이익이 0원이 되는 판매량이다.
우리는 영업이익이 최초로 발생하는 판매량을 알아야하므로 0원에서 1원이라도 높아지는 판매량을 구해야한다.
따라서, 위 x의 해에 +1 을 해준 값이 우리가 구하는 손익분기점이 발생하는 판매량이 될 수 있다.

👉 x = a/(c-b)+1 이 손익분기점이 발생하는 판매량(x)이다.

2. 손익분기점이 발생하지 않는 경우

손익분기점이 발생하지 않는 경우 "-1" 을 출력해야한다.
이익을 얻으려면 우리는 총 수입이 총 비용보다 커야함을 안다.
이때 고정비용은 말 그대로 계산에서 변동되지 않는 값이므로 이익이 발생하느냐 안하느냐의 계산에 중요한 영향을 끼치지 않는다. 즉, 우리는 b와 c만 고려하면 된다.

무슨 말이냐면, 손익분기점이 발생하지 않느냐? 라는 물음은 다시말해, 판매량(x)이 늘면 늘수록 노트북을 판매한 총 수입이 총 생산비용을 뛰어넘을 수 있느냐를 묻는 것이고, 이때 고정비용은 판매량에 의해 변하지 않는 비용이므로 결국 우리는 가변비용(b)이 노트북 가격(c)보다 큰지 아닌지만 알면 되는 것이다.

가변비용(b)과 노트북 가격(c)은 판매량(x)을 똑같이 곱하며 크는 숫자기 때문에
가변비용(b)이 노트북 가격(c)보다 처음부터 크면 애초에 총 수입이 총 비용보다 커질 수가 없다.
a + bx < cx 를 구해야하는데 b가 c보다 크면 애초에 넘을 cx가 더 커질 수가 없다.

따라서, 손익분기점이 발생하지 않는 경우는 b>c이고, b=c가 같은 경우 또한 0원 이상의 이익이 발생할 수 없기에

if(b>=c) 손익분기점 발생 X cout<<"-1"; return 0;

👉 b>=c 가 조건임을 알 수 있다.


풀이 코드

#include<iostream>
using namespace std;

int main(void)
{
    cin.tie(NULL); ios_base::sync_with_stdio(false);

    unsigned int a,b,c;
    cin>>a>>b>>c;

    if(b>=c){ //손익분기점 존재 X
        cout<<"-1";
        return 0;
    }

    cout<<a/(c-b)+1;
}

🛑 판매량(x)을 하나씩 늘려가며 반복문을 돌려서 cx > a + bx 인 경우를 찾는 방법도 있지만, 이 경우 수가 커지면 커질 수록 반복 횟수가 늘어 시간초과가 뜰 가능성이 있기 때문에 추천하지 않는다.


문제 출처 : https://www.acmicpc.net/problem/1712

profile
p(´∇`)q
post-custom-banner

0개의 댓글