#include <stdio.h>
int main()
{
int sum = 0, count = 1;
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
while(1)
{
sum = sum + a;
if (sum >= c)
{
printf("%d", count);
break;
}
else
sum = sum - b;
count++;
}
}
간단하게 말하자면 sum에 a를 차곡차곡 쌓고, c가 넘으면 count한 걸 출력
아니라면 b값을 빼서 반복.
그런데 문제에서 시간제한이 0.15초로 시간초과로 틀리게 되었다.
while문을 쓰면 안되겠구나 생각을 했다.
근데 생각을 해봐도 답이 떠오르지 않아 검색했다.
#include <stdio.h>
int main()
{
int count;
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
count = (c - b - 1) / (a - b) + 1;
printf("%d", count);
}
달팽이는 하루에 a - b씩 c만큼 올라가야 한다.
하지만 마지막에 올라갔을 경우에, 미끄러지는 경우를 고려를 안해야 하기 때문에 총 c - b만큼을 올라가야 한다.
따라서 (c - b) / (a - b)를 해주어야 한다.
여기에서 몫이 나누어 떨어지지 않을 경우 한 번 더 가야 하므로 +1을 해주어야 한다.
따로 케이스를 지정하지 않고 분자에 -1을 한 뒤 몫을 +1을 처리해주어서 답을 도출한다.