알고리즘/백준

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

ㅈㅣ니 2023. 9. 12.
반응형

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

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

www.acmicpc.net

[풀이]

import sys
a,b,v = map(int, sys.stdin.readline().split())
day = 0
cnt = 0
while day < v:
    cnt +=1
    day +=a
    if day >= v:
        break
    day -=b
   
print(cnt)

처음에는 이렇게 풀었는데,

입력의 숫자가 커질수록 시간초과가 발생했다.

반복문 없이 풀어야 시간초과 문제를 피할 수 있어서 고민하다가 결국 구글의 도움을 받았음...ㅠㅠ

 

import sys
import math
a,b,v = map(int, sys.stdin.readline().split())
day = (v-b)/(a-b)  
print(math.ceil(day)) # 소수점 발생시 올림함수 써서 day+1 해줌.

(v-b) / (a-b)로 식을 짜야지 풀리는 문제였다.

반응형