반응형
코드
a, b, v = map(int, input().split())
day = (v-b) / (a-b)
print(int(day) if day == int(day) else int(day)+1)
하루동안 움직이는 거리는 a이고 밤이 되면 b만큼 미끌어진다. -> a만큼 더하고 b만큼 뺀다.
그런데 다음날 지나갈 때 -b를 한 채로 계산을 하게 되면 오류가 날 수 도 있다
ex) a,b,v =2,1,5 로 예로 들고 밤도 하루단위로 계산하게 되면 a-b=1 하루 1만큼씩 움직이기에 5일이 걸린다는 결과가 나오는데 아침이 되었을 때 움직이는 것까지 계산하면 4일 이면 v에 도달하게 된다.
그러므로 v = a*day - b*day + b 로 수식으로 표현할 수 있다.
day값이 int(day)정수값과 같은 .0으로 끝나게 되면 day값에 도달하게 되는데 그렇지 아니한 경우는 하루를 더 더해 주어야 한다.
시간 초과 된 코드
a, b, v = map(int,input().split())
day = 0
length = 0
while True:
length += a
day += 1
if length >= v :
break
length -= b
print(day)
코딩테스트에서 제시한 시간을 넘어가면 안되기 때문에 day값이 한 번에 나오게 최적의 값을 한 번에 구하는 코드를 작성해야 통과할 수 있다!!
반응형
'Algorithm > Boj' 카테고리의 다른 글
백준 1002 파이썬 터렛 (0) | 2022.02.07 |
---|---|
백준 4948 파이썬 - '에라토스테네스 체' (0) | 2022.02.07 |
백준 2775 파이썬 / 부녀회장이 될테야 (0) | 2022.02.04 |
백준 2839 파이썬 / 설탕배달 (0) | 2022.02.04 |
백준 4673 파이썬 (0) | 2022.01.29 |