땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int day;
int A, B, V;
cin >> A >> B >> V;
V = V - A; //낮동안 올라갈 수 있는 거리를 전체 막대기에서 뺀다.
day = V / (A - B); //낮과 밤을 합쳐서 올라 갈 수 있는 거리를 막대기에서 나누어 필요한 일수를 구한다.
day += 1; //그 다음 낮이 필요하기 때문에 하루를 더한다.
cout << day << '\n';
return 0;
}
⭐ 이 경우 5 1 15가 반례가 된다. 이유는 전체 막대기에서 낮동안 갈 수 있는 거리를 뺀 거리를 낮과 밤동안 갈 수 있는 거리로 나누는 방식으로 일수를 구했는데 이 때 깔끔하게 떨어지지 않고 나머지가 생기는 경우가 있다. 이러한 경우에는 하루가 더 소모된다.
//시작 11:32
//끝 11:45
//반례 5 1 15
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int day;
int A, B, V;
cin >> A >> B >> V;
V = V - A; //낮동안 올라갈 수 있는 거리를 전체 막대기에서 뺀다.
day = V / (A - B); //낮과 밤을 합쳐서 올라 갈 수 있는 거리를 막대기에서 나누어 필요한 일수를 구한다.
if (V % (A - B) != 0) {//반례 고려
day += 1;
}
day += 1; //그 다음 낮이 필요하기 때문에 하루를 더한다.
cout << day << '\n';
return 0;
}
⭐ 나머지가 생기는 경우 하루를 추가하여 일수를 계산해주었다.