감자튀김 공장🍟

[백준/2869] 달팽이는 올라가고 싶다 (with 파이썬) 본문

Algorithm/BOJ

[백준/2869] 달팽이는 올라가고 싶다 (with 파이썬)

Potato potage 2022. 10. 23. 21:40
반응형

✔ 문제


풀이

👽 틀린 코드 (시간 초과~!)

a, b, v = map(int, input().split())
h = 0
cnt = 0

while True:
    h += a
    cnt += 1

    if h >= v:
        print(cnt)
        break
    else:
        h -= b

 

 

⭕ 정답 코드

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

h = (v - b) / (a - b)
print(int(h) if h == int(h) else int(h) + 1)

 설명

h = (높이 - 저녁h) / (낮h - 저녁h) 라는 공식을 세우면 while문을 계속 돌 필요가 없다.

총 높이에서 밤에 미끄러지는 높이를 빼고, 하루에 총 올라갈 수 있는 거리로 나누면 되는 것이다.

h가 정수로 딱 떨어진다면 걸리는 날은 h가 되는 것이지만 딱 떨어지지 않는다면 int(h) + 1을 한다.

3.2일은 결국 4일 걸렸다는 것을 의미하기 때문에 int(h) + 1을 하면 된다.


후기

예제 입력 3 보자마자 깨달았다 바로 시간 초과가 날 것임을.... 그래서 더 간단하게 풀 수 있는 공식을 찾아볼려고 고민했다. 고민했음에도.. 공식을 찾지 못해서 다른 사람들의 코드를 참고했다😥

h = v / (a - b)는 아무리 생각해도 답이 아닌 것 같아서 어떤 공식을 세워야하는지 감을 잡지 못했다.

사실 시간 초과 없었으면 내 코드도 통과였겠지만 예제 입력 3에서 엄청난 시간이 걸렸을 것이다. (〃⌒▽⌒〃)ゝ


 참고

https://stultus.tistory.com/entry/Python-%EB%B0%B1%EC%A4%80-2869-%EB%8B%AC%ED%8C%BD%EC%9D%B4%EB%8A%94-%EC%98%AC%EB%9D%BC%EA%B0%80%EA%B3%A0-%EC%8B%B6%EB%8B%A4

반응형
Comments