수학

yeong-min·2022년 7월 14일

Silver 2869

첫시도

#include <iostream>
using namespace std;

int main() {
	int A, B, V,snail=0,cnt=0;
	cin >> A >> B >> V;
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	while (1) {
		cnt++;
		snail = snail + A;
		if (snail >= V) { break; }
		snail = snail - B;
	}
	cout << cnt;

	return 0;
}

A와 V의 최댓값이 1000,000,000(10억)이므로 while을 쓰면 안된다는 생각을 했어야했는데 변수의 범위를 정확히 캐치하지 못하여서 시간초과가 났다!

두번째시도

#include <iostream>
using namespace std;

int main() {
	int A, B, V;
	cin >> A >> B >> V;
	if ((V-A)%(A - B) == 0) {
		cout << (V - A)/(A-B) + 1;
	}
	else {
		cout << (V-A) / (A - B)+2;
	}

	return 0;
}

도착지점에 정확히 도착하는 경우와 도착지점을 넘어 도착하는 경우를 나누어 풀었다.
도착지점 바로 직전인 V-A까지 얼마만에 왔는지 계산을 하여 마지막에 도착지점까지의 걸린 시간을 +1해주어 답을 구하였다

0개의 댓글