SMALL
문제 출처
풀이코드
총 3번 답안을 작성해서 풀었습니다.
2번째까지의 답안은 시간초과가 났고 세 번째 답안은 통과!
백준코드에서 수학문제라고 나오는 문제들은 for문이나 while문으로 접근하면 시간초과가 나는 것 같습니다.
처음에는 while문으로 달팽이가 올라갔다가 미끄러진 것을 적용했습니다.
a, b, v = map(int, input().split())
height = a
days=1
while True:
height+=a
days+=1
if height > v:
print(days)
break
height-=b
하지만 테스트케이스 [100 99 1000000000] 에서 시간초과
두 번째 접근에서는 높이(height) 변수를 없애고 while 문에 수식을 만들었습니다.
a, b, v = map(int, input().split())
days=0
while True:
days+=1
if a*days - b*(days-1)>=v:
print(days)
break
하지만 역시 테스트케이스에서 시간 초과.....
while로 반복하는 것으로 접근하는 것 자체가 문제인 것이라 느껴서
저 수식을 다르게 변형하기로 했습니다.
정답
a, b, v = map(int, input().split())
days = (v-b) / (a-b)
if days == int(days):
print(int(days))
else: print(int(days)+1)
반복하지 않도록 코드를 바꾸니 테스트케이스도 통과하고 답안으로 채점완료!
LIST
'알고리즘-python > 백준 문제' 카테고리의 다른 글
[백준 / 10250 / 파이썬(Python3)] ACM 호텔 (0) | 2021.07.16 |
---|---|
[백준/1193/파이썬(Python3)] 분수 찾기 (0) | 2021.07.09 |
[백준/1927/파이썬(Python3)] 최소힙 (0) | 2021.07.08 |
[백준/2292/파이썬(Python3)] 벌집 (0) | 2021.07.07 |
[백준/1712/파이썬(Python3)] 손익분기점 (0) | 2021.07.07 |