본문 바로가기
C++/백준 코딩테스트 풀이 C++

C++ 2869 달팽이는 올라가고 싶다

by jjiing 2022. 7. 2.

while문으로 풀이하면 직관적이고 쉽게 풀이할 수 있으나, 최댓값 때문에 시간초과로 풀이가 틀린다.

그래서 그냥 수학적인 식으로 접근해서 풀어야한다.

 

달팽이가 V-A만큼만 올라가면 다음날 A만큼 더 올라가면 되므로

사실상 목표높이는 V-A이다.

 

목표 : V-A

하루 올라가는 양 : A-B

따라서 걸리는 날짜 : (V-A)/(A-B) 

 

여기에 (V-A)/(A-B)의 나머지가 0 이면 다음날 딱 A만큼 올라가주면 되기 때문에 day에 +1을 해줘야하고 

 (V-A)/(A-B)의 나머지가 0이 아니면 다음날 A만큼 올라가도 하루가 부족하기 때문에 day.에 + 2를 해줘야한다.

 

따라서 걸리는 날짜로 (V-A)/(A-B)+1를 설정해주고

 (V-A)/(A-B)의 나머지가 0이 아닌 경우에 +1을 해주는 식으로 풀이했다.

 

#include <iostream>

using namespace std;

int main()
{
	int A, B, V;
	cin >> A >> B >> V;
	int day = 0;

	day = (V - A) / (A - B) + 1;
	if ((V - A) % (A - B) != 0)
		day++;
	cout << day;
}

 

'C++ > 백준 코딩테스트 풀이 C++' 카테고리의 다른 글

C++ 1181 단어 정렬  (0) 2022.07.04
C++ 10871 X보다 큰 수  (0) 2022.07.03
C++ 2798 블랙잭  (0) 2022.07.01
C++ 11050 이항계수  (0) 2022.06.29
C++ 10773 제로  (0) 2022.06.28