갓비니

코딩 문제 연습(8단계 / 백준 1712번 - 손익분기점) C++ 본문

Programming/코딩 문제 풀이

코딩 문제 연습(8단계 / 백준 1712번 - 손익분기점) C++

갓비니 2021. 1. 27. 19:56

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
 
int main() {
    int A, B, C;
    cin >> A >> B >> C;
    
    if (B >= C) {
        cout << -1;
        return 0;
    }
    cout << A / (C - B) + 1;
    
}
cs

 

<손익분기점이 존재할 경우>

손익분기점은 최초로 이익이 발생하는 지점이다.

C*생산대수 - (A-B*생산대수) > 0 일때의 생산대수를 구하는 것이 문제이다.

이 식을 정리하면

생산대수 > A/(C-B) 가 되는 생산대수를 구하면 되는것인데

 

예시로, 1000 70 170의 경우

1000/(170-70) = 10 이다

최소 10을 넘는 수 이어야하므로 +1 한 11이  답이다.

즉, 손익분기점은 ( 존재할경우 ) = A/(C-B) + 1를 만족하면 되는것이다.

 

<손익분기점이 존재하지 않는 경우>

하지만 손익분기점이 존재하지 않는 경우가 있다. 

C*생산대수-(A+B*생산대수)<0 일 경우이다.

이 식을 정리하면

생산대수 < A/(C-B) 이어야 하는데 

 

예시로 3 2 1의 경우

3/(1-2) 이다.

손익분기점의 값이 음수이거나 존재할 수 없어야 (분모가 0이 되는 경우) -1 값을  출력할 수 있다.

따라서 0>=C-B 이어야하고 이를 이항하면

B>=C 가 된다.

따라서 이것을 if문으로 작성하고 return 0; 으로 메인문 자체를 빠져나오면된다.