백준/단계별

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

_mi_ni_01 2021. 8. 24. 18:27

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

 

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

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

www.acmicpc.net

이번 문제는 낮엔 올라가고 밤엔 미끄러지는 달팽이가 정상에 도탁할때까지 며칠이 걸리는지 구하는 문제입니다.

어릴 때 이런 수학문제를 풀었던것 같은데 이젠 컴퓨터로 풀고 있네요 ,,ㅎ,,,,,

처음에 반복문으로 풀었더니 시간 초과가 떠서 반복문을 사용 할수가 없더라구요 ㅜ

 

풀이)

v-a까지 올라가는데 day일이 걸린다고 쳤을때 다음날 a를 올라가 정상에 도착할수 있게 됩니다.

그렇다면 day+1일만에 v까지 도착하게 되는것이지요

그래서 v-a/a-b가 나누어 떨어지면 총 day+1일이 소요되고

나누어 떨어지지 않는다면 조금더 가야해서 day+2일이 소요됩니다.

이를 바탕으로 코드를 작성하면 성공!!_!

#include <iostream>
using namespace std;

int main() {
    int v, a, b, day = 0;
    cin >> a >> b >> v;
    day += (v - a) / (a - b);
    if ((v - a) % (a - b) == 0) cout << day + 1;
    else
        cout << day + 2;
    return 0;
}