코테38) 달팽이는 올라가고 싶다

gyu·2024년 5월 4일

Algorithm

목록 보기
39/45

📝 문제설명

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

예제 입력 1
2 1 5
예제 출력 1
4

처음 풀이:

result = list(map(int, input().split()))
start, days = 0,0
while days < result[2]:
    start = start + result[0] - result[1]
    if start == result[2]:
        break
    days += 1
print(days)

입력받은 세 정수를 리스트에 넣고 반복문을 통해 하루에 올라갈 수 있는 높이를 구하고 다 올라갔을 때의 걸린 일수를 출력했다
높이가 엄청 길 때 시간초과가 났다(ex) 10000000) 그래서 반복문을 쓰지 않고 숫자를 받았을 때 바로 계산하고 출력이 돼야 한다고 생각했다
근데 계속 시간초과나서 찾아본 다른 사람들의 풀이..

다른 풀이:

import math
#assign three input values to each variable
A, B, V = map(int, input().split())
#calculate the number of days required to reach the top of the tree.
#V - B: Represents the total distance needed to be climbed.
#A - B: Represents the distance climbed each day.
#(V - B) / (A - B): Calculates the number of days required to climb the remaining distance.
days = math.ceil((V - B) / (A - B))
print(days)

세 정수를 리스트에 넣지않고 바로 변수에 저장했다
V-B : 총 올라가야 할 높이
A-B: 하루동안 올라갈 수 있는 높이
(V - B) / (A - B) : 다 올라갔을 때까지 걸린 일 수 -> 나누기이기에 소수점이 나올 수 있어서 math.ceil()을 통해 반올림해준다

profile
#TechExplorer 🚀 Curious coder exploring the tech world, documenting my programming journey in a learning journal

0개의 댓글