백준 2869번은 수수께끼에서 많이 나오는 문제 중 하나이다. 올라가는 높이에서 내려가는 높이를 뺀 후, 전체 높이에서 빼주면 끝일거라고 생각하지만, 그것이 이 문제에서의 함정인 것이다.
올라가는 일 수를 x라고 가정하고, 올라가는 높이는 a, 내려가는 높이는 b, 전체 높이는 v라고 두었다. 이를 계산하면
(a - b) * (x - 1) + a >= v (1 ≤ b < a ≤ v ≤ 1,000,000,000)
가 된다. x를 구해야 하니, 이 수식을 정리하면
x - 1 >= (v - a) / (a - b)
x >= (v - a) / (a - b) + 1 (v - a >= 0, a - b > 0)
이 된다. 코드는 다음과 같다:
#include <stdio.h>
#include <math.h>
int main(void) {
	int a, b, v;
	scanf("%d %d %d", &a, &b, &v);
	int result = ceil(((double)v - a) / (a - b)) + 1;
	printf("%d", result);
}
c언어이고, 나눗셈 연산이 들어가 있으므로 강제변환으로 수를 맞춰주고, 헤더 <math.h>를 이용하여 ceil 함수를 가지고 왔다. ceil 함수는 올림 연산을 제공해주는 함수이다.