[백준] 2869번. 달팽이는 올라가고 싶다

leeeha·2023년 2월 1일
0

백준

목록 보기
84/186
post-thumbnail

문제

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


풀이

시간초과

시간 제한은 0.15초인데 V의 최대 입력값은 10억이므로 반복문을 사용하면 시간초과가 발생한다.

#include <iostream>
using namespace std;

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int A, B, V; 
	cin >> A >> B >> V; 

	int curHeight = 0, dayCount = 0; 
	
	while(true){
		curHeight += A; 
		dayCount++; 
		if(curHeight < V) curHeight -= B; 
		else break; 
	}

	cout << dayCount; 
	
	return 0;
}

답안

(V-A)까지 올라가면 그 다음날 A만큼만 더 올라가면 된다. 따라서, (V-A)까지 올라가는 데 걸리는 시간에 1을 더하면 답을 구할 수 있다.

#include <iostream>
using namespace std;

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int A, B, V; 
	cin >> A >> B >> V;

	int day = (V-A) / (A-B); 

	if(day * (A-B) < V-A){
		day += 2; 
	}else {
		day += 1; 
	}

	cout << day; 
	
	return 0;
}

profile
습관이 될 때까지 📝

0개의 댓글