본문 바로가기
Algorithm/Baekjoon

[백준/BOJ] 1712번 - 손익분기점 (C++)

by shine-jung 2021. 7. 11.
반응형

문제 링크

 

코딩하기 전 생각하기

/*
a, b, c를 입력 받는다.
손익분기점을 n이라고 하자.
c * n이 a + b * n 보다 크게되는 n의 값을 찾아야한다.
n이 커질 수록 c * n과 a + b * n의 간격이 작아지면 손익분기점이 있는것이고 
아니면 없는것이다.
즉, c가 b보다 커야 손익분기점이 있다.
*/

 


 

코드

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main() {
    long a, b, c, n = 0;
    cin >> a >> b >> c;
    if ( b >= c ) {
        cout << -1;
        return 0;
    }
    /* 1st try
    while ( c * n <= a + b * n ) {
        n++;
    }
    cout << n;
    */
    cout << a/(c-b) + 1;
}

 


 

느낀점

 

쉬워 보이지만 반복문을 사용하였더니 시간제한으로 인해 실패하였다. 정답 비율이 낮은 이유가 있었다.

인터넷에서 조언을 구하여 n을 반복문 없이 바로 구하는 방법을 알 수 있었다.

양변을 n에 대해서 정리하면 a/(c-b) < n 식이 나오고, 이 식을 만족하는 첫번째 n은 좌항에 1을 더한 값이다.

 

(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.

댓글 환영합니다!

반응형

댓글