문제링크 : https://www.acmicpc.net/problem/1712
이 문제는, O(n)으로 푸는 방법과 O(1)로 푸는 방법이 있다.
O(n)인 경우, 21억개의 input이 있기 때문에 제한시간 안인 0.35초에는 풀 수 없다.
따라서 O(1)인 방법으로 풀어야 한다.
O(n)인 경우는 반복문을 돌리면서 조건을 매 회 체크하는 것이고,
O(1)인 경우는 나눗셈 연산 한번이 필요하다.
소스코드 :
이 문제는, 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 | 
댓글
댓글 쓰기