시간 초과를 신경 써야 하는 문제이다.
아래 코드처럼 구현하게 되면, 위 예시가 정말 오래 걸린다. (a와 b의 차이가 얼마 안 나기 때문이다.)
num = list(map(int, input().split()))
a = num[0]
b = num[1]
v = num[2]
count = 1
result = a
while(v > result):
result -= b
result += a
count += 1
print(count)
위 코드를 식으로 표현하자면, a * n - b * (n - 1) >= v 이렇게 나온다.
정리하면, n >= (v - b) / (a - b)
>= 를 처리하기 위해 math 모듈을 이용해 '올림' 처리 해주었다.
import math
num = list(map(int, input().split()))
a = num[0]
b = num[1]
v = num[2]
print(math.ceil((v - b) / (a - b)))
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] [Python] 2581번 : 소수 (0) | 2021.05.06 |
---|---|
[BOJ] [Python] 1978번 : 소수 찾기 (0) | 2021.05.05 |
[BOJ] [Python] 2292번 : 벌집 (0) | 2021.05.04 |
[BOJ] [Python] 1260번 : DFS와 BFS (0) | 2021.04.12 |
[BOJ] [Python] 2775번 : 부녀회장이 될테야 (0) | 2021.04.10 |