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 |