삽집하는 개발들/알고리즘

[91일차][백준][수학][2869]달팽이는 올라가고 싶다

악투 2023. 12. 8. 16:00
반응형

문제 설명

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

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

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

 

입력

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

 

출력

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

 

예제 입력, 예제 출력

2 1 5 4
5 1 6 2
100 99 1000000000 999999901

 

코드 및 설명

import sys

a, b, v =  map(int, sys.stdin.readline().split(" "))

if v < a:
  print(1)
else:
  if (v - a) % (a - b) == 0:
    print((v - a) // (a - b) + 1)
  else:
    print((v - a) // (a - b) + 2)

 

이 문제는 수학 문제이다. 

 

예제로 보면

 

2 1 5

(5 - 2) % (2 - 1)

3 % 1 == 0

 

(5 - 2) // (2 - 1)

3 // 1 == 3

3 + 1 == 4

 

5 1 6

(6 - 5) % (5 - 1) 

1 % 4 == 1

 

(6 - 5) // (5 - 1) 

1 // 4 == 0

0 + 2 == 2

 

100 99 1000000000

(1000000000 - 100) % (100 - 99) 

999999900 % 1 == 0

 

(1000000000 - 100) // (100 - 99) 

999999900 // 1 == 999999900

999999900 + 1 == 999999901

 

2 1 5는 4일째될 때, 5 1 6는 2일째 100 99 1000000000는 999999901일째에 정상에 도착할 수 있다.

반응형