프로그래밍/백준(BOJ)

[백준(BOJ) / C][Bronze Ⅰ] 2869번 : 달팽이는 올라가고 싶다

데굴데굴이 2024. 1. 6. 00:03
반응형

문제

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

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

www.acmicpc.net


풀이

처음에는 반복문을 사용하여 풀면 되겠다고 생각했고 너무 쉽다고 생각했는데, 결과는

시간 초과로 실패...

 

그 이유를 보니 0.25초안에 1,000,000,000 라는 큰 숫자를 다 처리하기에는 너무나도 모자란 시간이기에 이건

수학적으로 접근해야겠다고 생각했다.

 

아침에는 A 만큼 가고 밤에는 B 만큼 떨어진다. 그렇다면 하루에 올라가는 거리는 A-B, 

그리고 마지막 날에는 안떨어지기떄문에 총 올라가야하는 거리는 V-B 이다. 

 

그렇다면 ( V - B ) / ( V - A )로 나누어서 깔끔하게 안나누어질수도 있기때문에 +1를 한다.

그런데 +1를 하더라도 안 나뉘어지는 경우도 있으니 ( V - B - 1 ) / ( V - A ) + 1 를 하면 정확한 값이 나온다.


소스코드

#include <stdio.h>

int main(void)
{
	int A, B, V, count = 0;
	scanf("%d %d %d", &A, &B, &V);
	
	count = ( V - B - 1) / (A - B) + 1;

	printf("%d", count);
	
	return 0;
}
반응형