백준(BOJ) - 달팽이는 올라가고 싶다(2869번) - 파이썬(python)

2023. 2. 2. 19:10코딩테스트/백준(BOJ)

문제

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

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

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

입력

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

출력

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

 

하루에 a만큼 올라가고 b만큼 미끄러진다. 총 올라가야할 높이는 v

import sys
input=sys.stdin.readline


a,b,v=map(int,input().rstrip().split())

# 첫 날 올라가는 높이: a
# 올라가야하는 높이: v

# 다음날 올라가는 높이: a * 2
# 올라가야하는 높이: v+b
day=1
res=v
while 1:
    if a*day>=res:
        print(day)
        break
    else:
        res+=b
        day+=1

a,b,v가 10억까지의 수이므로 반복문으로 풀면 당연하게 시간초과가 난다.

import sys
input=sys.stdin.readline


a,b,v=map(int,input().rstrip().split())

# 매일 올라가는 높이: a
# 매일 떨어지는 높이: b

# 정상 도착후에는 미끄러지지 않으므로
# (정상높이 - b) 만큼 도착하는 날을 구하면된다

day=(v-b)//(a-b)
# 나누어 떨어지지 않으면 하루 더 추가
if (v-b)%(a-b)!=0:
    day+=1

print(day)

728x90