[BOJ]2869:カタツムリが行きたがっている



🔒 例

>> 2 1 5

4

>> 5 1 6

2

>> 100 99 1000000000

999999901

🔧 に答える

1. a, b, v = map(int, sys.stdin.readline().split())
2. 반복문 : h = 현재 높이
    2.1 days += 1, h += a
    2.2 if v <= h then break
    2.3 h -= b
3. v > (a-b)*n 가 성립하는 가장 큰 n 찾기
	3.1 (v-a)지점 == 최종 도달 전 날

🔑 答案用紙

### 제시된 풀이로 작성한 코드
import sys

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

n = (v - a) // (a - b)
days = n
h = (a-b)*n

while True:
    days += 1
    h += a
    if v <= h:
        print(days)
        break
    h -= b

############################################################
### 다른 방법으로 풀이한 코드
# (v-b) // (a-b) : 최소한의 day 수
# 잔여블록 < (a-b) : 당일 +a일 때 도달했을 것

import sys
A, B, V = map(int, sys.stdin.readline().split())

day = (V-B)/(A-B)
# 나누어 떨어진다 == 당일 최종 도달
if day == int(day):
    day = int(day)
# 나누어 떨어지지 않는다 == 잔여 존재 == 다음날이 최종 도달하는 날
else:
    day = int(day)+1
    
print(day)

💡 コンセプト