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

alsry._.112·2023년 8월 7일
0

백준

목록 보기
16/102

🔗문제 풀러가기
단계별로 풀어보기 단계 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;
}

해석

  1. 낮에 오르는 수치인 day, 밤에 떨어지는 수치인 night, 올라가야할 높이인 height를 선언한뒤 입력받는다.
  2. 정상에 올라가면 미끄러지지 않으므로 올라가야할
    높이는 height가 아니라 height - day이다.
  3. 그리고 height - day에 가는데 걸리는 시간은
    (height - day) / (day - night)이다.
  4. 하지만 몫이 딱 나누어 떨어지지 않는다면 높이가 조금 부족한 것이므로 하루를 더 가야한다.
    이를 처리하기 위해 (height - day)에 1을 미리 빼두고 몫에 무조건 +1을 더해주는 것으로 해결하였다.
  5. 이제 이 식을 출력해주기만 하면 끝!
profile
소통해요

0개의 댓글