[Algorithm] 백준 2869번 달팽이는 올라가고 싶다(파이썬)

고플래닛·2021년 7월 8일
0

Algorithm

목록 보기
14/40
post-thumbnail
post-custom-banner

백준 #2869

문제 바로가기


문제

:땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

입출력 규칙

1. 입력

  • 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

    2. 출력
  • 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

문제접근

A(낮 이동 거리), B(밤 미끄러지는 거리), V(목표 높이)가 순서대로 값이 주어지며, 총 소요일을 계산하는 문제이다.
문제를 풀면서 주의할 점은 나무 정상에 도달하게 되면 떨어지지 않는 것을 주의해서 문제를 풀어야 하며, 단순한 수학 문제로 풀 수 있는 문제이다.

  1. A(낮 이동 거리), B(밤 미끄러지는 거리), V(목표 높이)의 입력 값을 세개의 변수를 통해 받도록 한다.
  2. 나무 높이를 기준으로 식을 작성해본다면 (A-B)*N + A = V 의 공식과 같다. 낮 이동거리에서 밤에 미끄러지는 거리를 뺀 이동거리를 N번을 반복하며, 마지막에 나무 정상에 도착할때 A만큼 이동한 것을 공식화 하였다.
  3. 해당 풀이를 식으로 대입하자면 (V - A) / (A-B) + 1과 같으며, Math 모듈의 ceil 함수를 이용하여 소수를 올림하도록 한다.

문제풀이(Python)

import math

move_tree, fall_tree, tree_height = map(int, input().split(' '))
day = (tree_height - move_tree) / (day_move - fall_tree) + 1

print(math.ceil(day))

풀이를 통해 배운 것

  • math 모듈의 Ceil 함수를 공부할 수 있었다.
profile
blog 이사했습니다. 주소 : https://goplanit.site/
post-custom-banner

1개의 댓글

comment-user-thumbnail
2021년 8월 22일

혹시 소수는 왜 올림하는 걸까요...?

답글 달기