본문 바로가기
파이썬 코딩테스트

백준 2869번 - 달팽이는 올라가고 싶다 (파이썬/Python)

by 준벨롭 2024. 3. 4.

문제

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

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

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

입력

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

출력

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

문제 링크

https://www.acmicpc.net/problem/2869

처음 제출한 답안

A, B, V = map(int, input().split())

diff = A-B
goal = V-A
cnt = 1
while goal > 0:
    cnt += 1
    goal -= diff
print(cnt)

# while문을 이용하면 시간초과가 난다... 수가 너무 클 때 ㅠ

수정 답안

snail = list(map(int, input().split()))
up, down, tree = snail
goal = tree - down
diff = up - down
if goal % diff != 0:
    print((goal // diff) + 1)
else:
    print(goal//diff)

후기

while 반복문이 아닌 단순연산을 이용해 값을 구하면 훨씬 계산이 빠르다.

728x90