문제 링크: 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)
- 반복문을 통해 계속 숫자를 더하고 뺴야하기 때문에 큰 수가 들어오면 시간초과가 난다는 것을 깨달았다. 따라서 이 문제에선 반복문을 쓰지 않고 방정식을 통해 식을 만들어 풀어야 한다.
*피드백은 언제나 환영입니다 :)
'백준 문제풀이 > 파이썬' 카테고리의 다른 글
| [백준/파이썬] #9506 약수들의 합 (1) | 2024.02.11 |
|---|---|
| [백준/파이썬] #2609 최대공약수와 최소공배수 (0) | 2024.02.09 |
| [백준/파이썬] #10814 나이순 정렬 (1) | 2024.02.06 |
| [백준/파이썬] #1181 단어 정렬 (2) | 2024.02.05 |
| [백준/파이썬] #4344 평균은 넘겠지 (0) | 2024.02.04 |