백준 문제풀이/파이썬

[백준/파이썬] #2869 달팽이는 올라가고 싶다

꽌 2024. 2. 7. 04:03

문제 링크: https://www.acmicpc.net/problem/2869

 

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

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

www.acmicpc.net


코드 구상

작성 코드

A, B, V = map(int, input().split())
Day = (V-B)/(A-B)

if Day == int(Day):
    print(int(Day))
else:
    print(int(Day) + 1)

알아간 점

1.시간초과

  • 처음에 문제를 보고 반복문을 가장 먼저 떠올랐고 while 문을 통해 코드를 작성했다.
#시간 초과된 코드
A, B, V = map(int, input().split())
H = 0
D = 0

while 1:
    H += A
    D +=1
    if H >= V:
        break
    H -= B
print(D)
  • 반복문을 통해 계속 숫자를 더하고 뺴야하기 때문에 큰 수가 들어오면 시간초과가 난다는 것을 깨달았다. 따라서 이 문제에선 반복문을 쓰지 않고 방정식을 통해 식을 만들어 풀어야 한다. 

 

 

*피드백은 언제나 환영입니다 :)