https://www.acmicpc.net/problem/2869
낮에 a만큼 올라가고 밤에 b만큼 미끄러지는 달팽이가 높이 v만큼의 막대를 며칠만에 올라가는지에 관한 문제.
시간제한이 꽤 짧아 당황했다.
처음에는 그냥 반복문으로 풀려고 했지만, 시간제한에 걸려 결국 시간초과로 오답.
그래서 어떻게 하지 하다가 관계식을 도출해서 풀어버렸다.
올라가는데 n일이 걸린다고 하자. 그렇다면 달팽이는 a만큼 n번 올라가고 b만큼 n-1번 미끄러질 것이다. 이 식을 정리하면 다음과 같이 정리된다.
이때 (v-b)/(a-b)가 나누어 떨어지지 않는 경우, 이 수보다 큰 최소의 자연수가 정답이 된다.
#include <stdio.h>
int main () {
int a, b, v;
scanf("%d %d %d", &a, &b, &v);
printf("%d", (v-b)%(a-b) ? (v-b)/(a-b)+1 : (v-b)/(a-b));
/* (v-b)/(a-b)가 깔끔하게 나누어 떨어지는 경우는 그 값이 출력이지만,
그렇지 않은 경우는 그 값보다 큰 최소의 자연수가 정답이다 */
return 0;
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 10757번 Python 풀이 (0) | 2021.09.10 |
---|---|
백준 3009번 C언어 풀이 (0) | 2021.09.10 |
백준 1193번 C언어 풀이 (0) | 2021.09.09 |
백준 4948번 C언어 풀이 (0) | 2021.09.09 |
백준 2775번 C언어 풀이 (0) | 2021.08.30 |