코테 공부/Python 문법

2869 달팽이는 올라가고 싶다( /와 // 차이)

prefer_all 2022. 8. 26. 22:37
문제

 

땅 위에 달팽이가 있다. 이 달팽이는 높이가 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

풀이

1. "정상에 올라간 후에는 미끄러지지 않는다" 를 어떻게 처리할까

-> 나무 막대 길이에서 미끄러지는 걸 한 번 뺀 값을 마지막 날이 아닌 경우 하루에 올라가는 값 기준 며칠 걸리는 지 확인

 

2. 5 1 6이 입력인 경우 하루가 아닌 이틀이 걸림 (나누어 떨어지지 않는 경우)

# *** 오답 / 이유: 시간 초과 ***
a,b,v = map(int, input().split())
day = 0
sum = 0
while sum < v-b:
    sum += a-b
    day +=1
print(day)

 

import math

a,b,v = map(int, input().split())
day = (v-b)//(a-b)
if (v-b)%(a-b)  == 0:
    print(day)
else:
    print(day+1)
import math
a,b,v = map(int, input().split())
day = (v-b)/(a-b)
print(math.ceil(day))
/는 나눗셈을 의미하며 결과가 float로 나타납니다
//는 나눗셈을 의미하며 결과가 int로 나타납니다.