코드
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
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 2609 최대 공약수와 최소 공배수 파이썬 풀이 (정수론 및 조합론) (0) | 2021.06.20 |
---|---|
[백준] 1037 약수 파이썬 풀이 (정수론 및 조합론) (0) | 2021.06.20 |
[백준] 1436 영화감독 숌 파이썬 풀이 (브루트포스) (0) | 2021.06.20 |
[백준] 1011 Fly me to the Alpha Centauri 파이썬 풀이 (기본 수학 1) (1) | 2021.06.19 |
[백준] 2839 설탕배달 파이썬 풀이 (기본 수학 1) (0) | 2021.06.19 |