#59. 백준 2869번 문제 풀이: 달팽이는 올라가고 싶다 | 문제 원본 보기 |
--입력-- 2 1 5 --출력-- 4 --입력-- 5 1 6 --출력-- 2 --입력-- 100 99 1000000000 --출력-- 999999901
하루에 올라가는 거리는 d = A(낮에 이동거리) - B(밤에 미끄러진 거리) 걸리는 날은 dn = V/d 가 된다. 정상에 올라가서는 미끄러지지 않는다고 했으므로, 이것을 고려해서, 나무 높이에서 미리 미끄러짐 거리를 미리 빼주고 계산하는게 핵심이다. 그래서 공식은 일수(dn) = (V - B) / d 가 된다. 일수가 소수점을 넘으면 하루가 반영(2.1 이면 3일 임)되므로, 나눈값을 올림처리 해야 한다. 대부분 언어에는 ceil 이라는 소수점을 올림처리하는 함수가 있다. 그것을 사용하면 된다.
#include <stdio.h>
#include <math.h> // ceil 올림 함수 사용을 위해 포함
int main() {
int A, B, V, d;
double dn;
scanf("%d %d %d", &A, &B, &V);
// A(이동거리) B(미끄러짐거리) V(막대높이) 값을 받는다.
d = A - B; // 하루 이동 거리
dn = (double)(V - B) / d;
// 마지막날 미끄러짐을 방지를 위해 막대 높이서 미끄러짐을 미리 빼줌
// 소수까지 계산을 위해 double 로 형변환
printf("%d", (int)ceil(dn)); // 결과값, 걸린 일수 출력
return 0;
}