리셋 되지 말자

[백준 2869] 달팽이는 올라가고 싶다 - 수학 본문

알고리즘

[백준 2869] 달팽이는 올라가고 싶다 - 수학

kyeongjun-dev 2021. 12. 29. 13:32

코드

def solution(a, b, v):
    answer = (v-b) // (a-b)
    if (v-a) % (a-b) == 0:
        return answer
    else:
        return answer+1


a, b, v = map(int, input().split())
print(solution(a, b, v))

 

설명

  • 하루에 올라갔다가 내려오는 높이(b-a)로 v를 나누는 방식으로 반복문을 돌리면 시간초과가 난다(2, 1, 10억이 입력이면 loop를 도는데 10억번 돈다.)
  • 총 거리인 v 에서 낮에 올라갈 수 있는 거리인 a를 뺀다.
  • 이 v-b 길이를 하루방 동안 올라갔다 내려오는 거리인 b-a 로 나눈다.
  • 이때 나누어 떨어지면 나눈 값을 출력한다.
  • 나누어 떨어지지 않으면 하루 더 올라가야 하므로 1을 더한 값을 출력한다.

 

  • 위 그림을 예시로 보면, 총 10일이 걸린다.
  • 이때 마지막날의 전 날에는 18까지 갈 수 있다. 이제 4를 가니까 정상에 오른다.
Comments