반응형
문제
https://www.acmicpc.net/problem/2869
코드
시간 초과 코드
import sys
a, b, v= map(int, sys.stdin.readline().split())
n = 1
while True:
if (a*n - (b*(n-1))) < v:
n += 1
else:
break
print(n)
정답 코드
a, b, v= map(int, input().split())
days = (v-b)/(a-b)
print(int(days) if days == int(days) else int(days)+1)
설명
처음에는 간단하게 생각하고 금방 풀릴 줄 알았던 문제인데,
시간 초과의 늪에 빠졌다.
반복문을 돌다 보니 수가 적을 때는 상관이 없지만 커지면 시간이 기하급수적으로 늘어나기 때문인데,
이를 해결하기 위해선 식을 수정해서 날짜가 한 번에 계산이 될 수 있게 해야 했다.
그렇게 수정한 코드가 아래의 코드이다.
days가 int(days)와 같으면 그대로 출력해주고 그렇지 않으면 1을 더한 값을 출력해주어 소수가 출력되는 결과를 막았다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 2775: 부녀회장이 될테야 (0) | 2022.12.17 |
---|---|
[파이썬, Python] 백준 10250: ACM 호텔 (0) | 2022.12.16 |
[파이썬, Python] 백준 1193: 분수찾기 (0) | 2022.12.14 |
[파이썬, Python] 백준 2292: 벌집 (0) | 2022.12.13 |
[파이썬, Python] 백준 1712: 손익분기점 (0) | 2022.12.12 |