프로그래밍/백준 킬러 문항 풀이

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

Jay_rock 2022. 6. 30. 01:57

문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

 

 

입력

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

 

출력

첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

 

 

문제 풀이

#include <iostream>
using namespace std;

int main()
{
    int A, B, V;
    cin >> A>> B >> V;
    cout << (V - B - 1) / (A - B) + 1;
    
    return 0;
}

 

우선 문제의 핵심은 "정상에 올라간 후에는 미끄러지지 않는다." 즉, 마지막에 전체 높이 (V)에서  떨어진 높이(B)를 빼준 값에서 하루에 올라가는 높이(A-B)로 나눠주면 며칠이 걸리는지 알 수 있다. 그리고 1을 더해서 마지막날 올라간 날짜를 더해준다. 이때 V-B 가 아닌 V-B-1을 해준 이유는 전체 높이와 하루에 올라가는 높이가 같으면(V = A) 한번에 도착하는 경우도 있기 때문이다.

 

 

달팽이는 올라가고 싶다

 

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

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

www.acmicpc.net