
문제설명
이 문제의 핵심은 시간제한입니다. while문을 돌리면 간단하게 구현할 수 있지만 (1 ≤ B < A ≤ V ≤ 1,000,000,000) 라는 큰 수가 입력값으로 주어지기 때문에 while문을 사용하면 시간초과가 뜹니다. 그렇다면 두 가지의 경우로 나누어 풀면 됩니다. 먼저 달팽이가 꼭대기에 올라가기까지의 일수를 담을 변수 n을 설정합니다. 이 n이 정수일 경우는 달팽이가 하루에 올라갈 수 있는 할당량을 모두 채우며 꼭대기에 도달하는 경우입니다. 이 경우는 nA + (n-1)B = V, 즉 n = (V-B)/(A-B)이 성립한다면 n을 출력하고, 그 외의 경우, 즉 달팽이가 할당량을 모두 채우지 않은 채로 꼭대기에 도달하는 경우, n이 소수점을 가지게 되죠. 이 경우에는 n+1을 출력하면 됩니다. 단, A-B가 0이 되는 경우, ZeroDivisionError를 방지하기 위해서 try-except문을 활용하였습니다.
달팽이는 올라가고 싶다(#2869) 파이썬 코드
a, b, v = map(int, input().split())
while True:
try:
n = (v-b)/(a-b)
if n == int(n):
print(int(n))
else:
print(int(n)+1)
break
except ZeroDivisionError:
break
'백준 문제풀이 > 수학(Math)' 카테고리의 다른 글
백준 온라인 저지 - 영화감독 숌(#1436) 파이썬 (0) | 2022.01.11 |
---|---|
백준 온라인 저지 - ACM호텔(#10250) 파이썬 (0) | 2021.07.30 |
백준 온라인 저지 - 분수찾기(#1193) 파이썬 (0) | 2021.07.30 |
백준 온라인 저지 - 벌집(#2292) 파이썬 (0) | 2021.07.30 |
백준 온라인 저지 - 손익분기점(#1712) 파이썬 (0) | 2021.07.30 |