관리 메뉴

HeeJ's

[백준 2869] 달팽이는 올라가고 싶다 :: C언어 본문

<Algorithm>_solved/<BOJ>_C

[백준 2869] 달팽이는 올라가고 싶다 :: C언어

meow00 2020. 5. 11. 18:34

달팽이는 올라가고 싶다 성공출처다국어분류

한국어   

시간 제한메모리 제한제출정답맞은 사람정답 비율

0.15 초 (추가 시간 없음) 128 MB 47781 11493 9708 26.672%

문제

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

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

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

입력

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

출력

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


처음에 반복문을 사용해 문제를 풀어주었는데 시간 초과가 났다.

 

while(true)의 무한 루프를 사용해서 그런가 하고 if문으로도 바꿔보았는데 시간 초과가 나서

문제를 다시 읽어보니 시간제한이 0.15초였다.

 

그래서 n = xxx

하는 공식으로 문제를 풀어주어야 하는구나 하고 구현한 알고리즘을 식으로 바꾸어 문제를 풀어 제출해주었다.

 

 

ceil() : math.h에 내장되어있는 함수로, 소숫점을 올림해준다. (반올림 X)

 


#include <stdio.h>
#include <math.h>

int main() {
	int a, b, v;
	scanf("%d %d %d", &a, &b, &v);
	int n;

	n = ceil((double)(v - a) / (a - b)) + 1;

	printf("%d", n);
	return 0;
}