🔗문제 풀러가기
단계별로 풀어보기 단계 8의 7번째 문제이다.
문제 분석

입력이 최대 1,000,000까지 이므로
반복문을 사용하면 시간초과가 걸려 수학적 계산을 이용해야 한다.
코드
#include <iostream>
using namespace std;
int main()
{
int day;
int night;
int height;
cin >> day >> night >> height;
cout << (height - night - 1) / (day - night) + 1;
}
해석
- 낮에 오르는 수치인 day, 밤에 떨어지는 수치인 night, 올라가야할 높이인 height를 선언한뒤 입력받는다.
- 정상에 올라가면 미끄러지지 않으므로 올라가야할
높이는 height가 아니라 height - day이다.
- 그리고 height - day에 가는데 걸리는 시간은
(height - day) / (day - night)이다.
- 하지만 몫이 딱 나누어 떨어지지 않는다면 높이가 조금 부족한 것이므로 하루를 더 가야한다.
이를 처리하기 위해 (height - day)에 1을 미리 빼두고 몫에 무조건 +1을 더해주는 것으로 해결하였다.
- 이제 이 식을 출력해주기만 하면 끝!