알고리즘/문제풀이

2869 - 달팽이는 올라가고 싶다(백준)

WhNi 2024. 6. 4. 09:02

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

 

 

	//while (height < v)
	//{
	// 	height += a;
	//	if (height == v)
	//	{
	//		answer++;
	//		break;
	//	}
	//	height -= b;
	//	answer++;
	//}
	이렇게 해도 답은 나오나, 큰 수에 있어서 시간 초과가 뜨게 됨.

#include <iostream>

using namespace std;

int main()
{
	int a, b, v;

	cin >> a >> b >> v; 

	// 목표하는 높이
	int targetheight = v - a;

	// 하루에 올라가는 높이
	int dailyclimb = a - b;
	
	// 나머지가 생기면 하루가 더 추가 
	int days =1 + targetheight / dailyclimb + (targetheight % dailyclimb != 0 ? 1 : 0);


	cout << days << "\n";

	return 0;
};

생각나는대로 처음에는 푼 방법이 있으나, 시간초과가 뜨게 되어서 다르게 생각하게 되었다. 

 

목표하는 높이와, 하루 올라가는 높이를 구하고, 계산했을때 나머지가 생기면 하루가 더 추가되는 식으로 생각했다.