#include <iostream>
using namespace std;
int main() {
int A, B, V,snail=0,cnt=0;
cin >> A >> B >> V;
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
while (1) {
cnt++;
snail = snail + A;
if (snail >= V) { break; }
snail = snail - B;
}
cout << cnt;
return 0;
}
A와 V의 최댓값이 1000,000,000(10억)이므로 while을 쓰면 안된다는 생각을 했어야했는데 변수의 범위를 정확히 캐치하지 못하여서 시간초과가 났다!
#include <iostream>
using namespace std;
int main() {
int A, B, V;
cin >> A >> B >> V;
if ((V-A)%(A - B) == 0) {
cout << (V - A)/(A-B) + 1;
}
else {
cout << (V-A) / (A - B)+2;
}
return 0;
}
도착지점에 정확히 도착하는 경우와 도착지점을 넘어 도착하는 경우를 나누어 풀었다.
도착지점 바로 직전인 V-A까지 얼마만에 왔는지 계산을 하여 마지막에 도착지점까지의 걸린 시간을 +1해주어 답을 구하였다