본문 바로가기
알고리즘/백준

백준 2869번 달팽이는 올라가고 싶다 [C++]

by seongjun 2023. 11. 26.

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

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

낮에는 A미터 올라가고, 밤에는 B미터 미끄러지는 달팽이가 V미터를 올라가기 위해 필요한 날의 수를 구하는 문제이다.

 

#include <iostream>
#include <string>

using namespace std;

int main(){
    int a, b, v;
    cin >> a >> b >> v;

    int one_day = a-b;
    int remain = v - a;
    int answer = 1;
    if (remain <= 0){
        cout << answer;
    } else {
        if (remain % one_day == 0)
            answer += remain / one_day;
        else 
            answer += remain / one_day + 1;

        cout << answer;
    }
}

필요한 날의 경우 최소 하루는 필요하다.(문제의 조건이 V > 1)

달팽이가 정상에 도달하면 미끄러지지 않는다는 점을 이용해, V-A를 B로 나눈 값을 구하면 된다.(마지막 날에 A만큼 올라가면 미끄러지지 않으므로.)

이때, B로 나눗셈을 할 시에 나머지가 생긴다면, 이는 하루를 더 올라가야 함을 의미한다. 이를 잘 구분하여 처리해주면 된다.