Post List

[BOJ] 백준 1712 손익분기점

문제링크 : https://www.acmicpc.net/problem/1712

이 문제는, O(n)으로 푸는 방법과 O(1)로 푸는 방법이 있다.
O(n)인 경우, 21억개의 input이 있기 때문에 제한시간 안인 0.35초에는 풀 수 없다.
따라서 O(1)인 방법으로 풀어야 한다.

O(n)인 경우는 반복문을 돌리면서 조건을 매 회 체크하는 것이고,
O(1)인 경우는 나눗셈 연산 한번이 필요하다.

소스코드 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main() {
    int a, b, c;
    cin >> a >> b >> c;
    int offset = 1;
    if (b >= c)
        cout << -1 << endl;
    else {
        offset = a / (c - b);
        cout << offset + 1;
        /*
        while (a + ((long long)b * offset) >= (long long)c * (offset)) {
            offset++;
        }
        cout << offset << endl;
        */
    }
}
cs

댓글