알고리즘/백준 문제풀이

[백준] 2869 달팽이는 올라가고 싶다 파이썬 풀이 (기본 수학 1)

자바칩 프라푸치노 2021. 6. 20. 00:44

코드

up,down,tree = map(int, input().split())
snail = 0 #달팽이의 높이
day = 0

# while snail<tree:
#     day+=1
#     snail +=up
#     if snail< tree:
#         snail -= down
#     else:
#         break
# print(day)


if (tree-down)%(up-down) >0:
    day = (tree-down)//(up-down)+1
else:
    day = (tree-down)//(up-down)
print(day)

 

풀이

이 문제는 while문으로 풀면 시간 초과가 나온다

그래서 입력이 되자마자 바로 출력하도록 해야한다.

이해하기 되게 까다로운 문제였다.

하지만 이해해보자!

 

원래 문제로 따지자면 낮에2를 올라가고 밤에 1을 내려오고를 반복하다가 딱 높이에 도달하면 밤에 내려오지 않는다.

그런데 일단 그것을 고려하지말고

매일 2-1씩 올라간다고 치자

그럼 5(높이)에서 1(내려오는 만큼)을 뺀 것 까지 딱 올라가면 되는거다

왜냐 마지막날에 높이를 찍고 내려오기 때문이다

그래서 (높이-내려오는 만큼)//(매일 가는 거리) 를 해주면 답이 나온다.

그런데 두번째 출력 예제처럼 위 수식이 딱 나누어 떨어지지 않고 나머지가 남는다면

하루 더 올라가야 하므로 +1을 해준다

 

728x90