[7/5] 2869 (달팽이는 올라가고 싶다)
브론즈1 문제
처음에 짠 코드
a, b, v = map(int, input().split())
h = 0
day = 1
while True:
h = h + a
if (h >= v):
print(day)
break
h = h - b
day += 1
로직
-
while문을 돌려서, h(높이)가 v 이상이 될 때까지 반복한다.
-
낮에 정상에 오르면 끝이 나므로, 더하기와 빼기 사이에 if문을 배치했다.
-
하지만 이렇게 할 경우, 숫자 매우 클 때 시간초과가 발생해서 통과되지 않았다.
틀리고 고친 코드
import math
a, b, v = map(int, input().split())
n = (v - a) / (a - b)
n = math.ceil(n)
n = n + 1
print(n)
로직
- 공식 : (a - b)n + a >= v
- 공식을 변형해서 넣었다.
- n이 분수인 경우, h가 v 이상이라는 뜻이다. 따라서 올림을 해줬다.
- (1 + n) 일에 정상에 도착하므로, 1을 더해줬다.
배운 것
- math.ceil(n) : 올림
Author And Source
이 문제에 관하여([7/5] 2869 (달팽이는 올라가고 싶다)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kj313903/75-2869-달팽이는-올라가고-싶다저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)