[백준] 2869번 달팽이는 올라가고 싶다 | 파이썬 Python

문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

 

입력

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

 

출력

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

 

예제

 

나의 첫 번째 풀이

A, B, V = map(int, input().split())
height = 0
day = True
day_cnt = 1

while height < V:
    if day:
        height += A
        day = False
    else: 
        height -= B 
        day = True
        day_cnt += 1
        
print(day_cnt)
  • for문으로 모든 단계를 계산하는 방법을 생각했지만 시간 초과로 실패했다.

 

나의 최종 풀이

import math

A, B, V = map(int, input().split())
day = (V-B)/(A-B)
print(math.ceil(day))
  • 미끄러지는 높이를 제외한 `V-B`를 하루 동안 올라갈 수 있는 높이인 `A-B`로 나눈 몫을 구한다.
  • 몫이 소수점으로 나올 경우 하루를 제대로 반영하기 위해 값을 올림 한다.

 

다른 사람의 풀이

A, B, V = map(int, input().split())
day = (V-B)/(A-B)
if day == int(day):
    print(int(day))
else:
    print(int(day) + 1)
  • `math.ceil`을 사용하지 않고 if문으로 두 가지 경우로 나눠서 `int()` 내장 함수를 사용했다.