[ C++ ] 백준 1712: 손익 분기점
✏️ PS/Boj

[ C++ ] 백준 1712: 손익 분기점

반응형

 

안녕하세요? 수구리입니다.

이번에 풀어볼 문제는 백준의 손익 분기점이라는 문제입니다.

너무 간단하다고 생각해서 바로 풀었지만 시간 초과가 났었습니다.

문제의 정답률을 보니 약 25% 더라구요.. ㅎ

그래서 차근차근 다시 생각해보고 적절한 답을 풀어냈던 것 같습니다.

그때의 기억을 되살려보면서 복습 해보도록 하겠습니다.

문제는 아래 링크에 있습니다. 한번씩 생각해보시는 것도 좋아 보이네요.

 

[ 문제 ] 1712: 손익 분기점

https://www.acmicpc.net/problem/1712

 

1712번: 손익분기점

월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와

www.acmicpc.net

 

 

[ 나의 풀이 ]


/*
	date : 2021.09.03
	problom : 1712 
	title : 손익 분기점
	discribe : 이익이 발생하는 지점을 찾아보자
*/
#include <iostream>
using namespace std;


int main()
{
    int A, B, C;
    cin >> A >> B >> C;
    
    if (B >= C) {
        cout<< "-1";
    } else {
        // 고정 비용을 차익으로 나눈 후, 거기서 1대를 더팔면 손익분기점을 찾음!
        int res = A / (C - B) + 1;
        cout << res;
    }
    // 시간 초과 부분.
    // for (unsigned long i = 1; 1; i++){
    //     cost  = A + (B * i);
    //     unsigned long total = C * i;
    //     if ( cost < total ) {
    //         cout << i;
    //         return 0;
    //     }
    // }

}

 

 

[ 설명 ]

1. 우선 시간 초과였던 부분은 주석처리를 해두었습니다. 범위가 일단 21억 이하의 자연수 이므로 해당 값을 처리하기 위해서 unsigned long으로 반복을 돌렸었습니다. 바로 그냥 TLE가 나버렸습니다.

2. 우선 어떠한 경우도 손익 분기점을 넘지 못하는 경우가 존재합니다. 그 경우를 걸러줍니다.

즉, 입력된 가변 비용(B)이 노트북 가격(C) 이상이라면 이 경우에는 손익 분기점을 찾지 못하므로 바로 "-1"을 return

3. 그렇지 않다면, 고정 비용을 차익으로 나누고, 거기서 1대를 더 팔면 그때부터 이익이 나는 부분이므로 해당 방정식의 해가 바로 손익분기점이 되는 것입니다.

A + Bx < Cx를 만족하는 해를 찾는 것이므로
양변을 x에 대해서 정리하면
A / (C - B) < x 
를 만족하는 처음 x의 값을 계산하는 것이다.

 

이상으로 백준 1712번: 손익 분기점에 대한 풀이였습니다.

감사합니다!

 

반응형