Cometin'

BOJ-2869 - Python

2020-07-27 at Algorithm category

v라는 높이에 있는 곳을 오르려는 달팽이는 낮에 a만큼 올라가며 밤에는 b만큼 미끌어진다고 한다. v에 도달했을 때는 미끄러지지 않을 때 며칠째에 도착하게 되는 지를 출력하는 문제. 첫번째 풀이는 반복문을 수행하며 v <= (a-b) * t + a라는 수식될 때까지 t를 1씩 더하며 풀었으나 당연히 시간초과를 만났다. 두번째 풀이는 t, (v-b) // (a-b)을 두고 (v-b) % (a-b)가 0일 때, t를 출력하고 아닐 시 t + 1을 출력하여 풀었다. a가 v보다 클 때를 위해 위처럼 풀었으며 다른 사람의 풀이는 (v-b-1)//(a-b)+1를 출력하여 단순히 푼 것을 배웠다. 수학적 사고능력의 부족함을 뼈저리 느꼈다.

# a,b,v = map(int, input().split())
# t = 0
# while 1:
#     t += 1
#     if v <= (a-b)*t + a:
#         break
#
# print(t+1)
a,b,v = map(int, input().split())
t = ((v-b) // (a-b))
print(t if (v-b) % (a-b) == 0 else t+1)
# 4 1 5 = 2
# 5-1 % 4-1 = 1
# 5-1 // 4-1 = 1

# 2 1 5 = 4
# 5-1 % 2-1 = 0
# 5-1 // 2-1 = 4

a,b,v=map(int,input().split())
print((v-b-1)//(a-b)+1)
# 4 1 5 = 2
# (5 - 1 - 1) // (4 - 1) + 1 = 2

# 2 1 5 = 4
# (5 - 1 - 1) // (2 - 1) + 1 = 4

hyesungoh

Personal blog by hyesungoh.

I like to share my knowledge for those who wandering in issue.