https://www.acmicpc.net/problem/2869
# 2869번 달팽이는 올라가고 싶다
a, b, v = map(int, input().split())
if a==b and b==v:
print(1)
else:
h_per_day = a - b
d_1_h = v - a
if d_1_h <= a:
print(v // h_per_day + 1)
else:
day = (d_1_h // h_per_day)
rest_h = d_1_h % h_per_day
if rest_h == 0:
print(day+1)
else:
z = (rest_h + a)//h_per_day +1
day += z
print(day)
처음 제출 했던 풀이.. 먼저 a,b,v가 같으면 첫날 바로 정상 도착하고 끝이라 1 출력하고 나머지 경우에 대해서만 생각하면 됩니다.
문제를 풀 때 정상에 도착하면 내려오지 않으니까 전체 길이 v에서 하루에 올라갈 수 있는 거리 a를 빼고 그 길이를 올라가는 날짜만 계산하면 될 거라생각했지만 틀렸습니다.
올라가는 거리를 전체 거리에서 뺄 게 아니라 내려오는 거리를 빼야 했습니다.
import math
a, b, v = map(int, input().split())
if a==b==v:
print(1)
else:
day = (v-b) / (a-b)
print(math.ceil(day))
이렇게 단순한 코드로 구현을 할 수 있습니다.
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 파이썬 2751 수 정렬하기 2 (0) | 2022.09.10 |
---|---|
[Python] 백준 파이썬 2750 수 정렬하기 (0) | 2022.09.09 |
[Python] 백준 파이썬 10870 피보나치 수 5 (0) | 2022.09.07 |
[Python] 백준 파이썬 9020 골드바흐의 추측 (0) | 2022.09.06 |
[Python] 백준 파이썬 4948 베르트랑 공준 (0) | 2022.09.05 |