[ 문제 ] 백준 알고리즘 2869 (달팽이는 올라가고 싶다) - python
> https://www.acmicpc.net/problem/2869
낮에 A만큼 올라가는데 밤에 B만큼 미끄러지고, V에 도달하면 종료
1일 2일 2.x일 => 3일째에 도달한다.
이러한 방식으로 하면 While문을 사용하는 떠올랐지만, 마지막 날은 낮만 올라가도 어짜피 하루를 쓰게 된다.
그래서 뒤에서부터 생각했다. V에서 마지막 B를 빼면 매일 (A-B)만큼씩 올라가게 된다.
수식을 정리하면, (V-B) / (A-B)일 동안 올라가게 된다.
이 때, 이 수식 결과 값이 소수점일 수도 있으니 올림을 해주면 된다. 2.x일은 결국 3일로 취급되기 때문이다.
구현 코드에서 올림을 사용한 방식이 2가지가 있다.
1. Python 내장함수 : math.ceil
2. 그냥 구현이지만 그나마 Python스럽게
[Code1]
import math
A, B, V = map(int, input().split())
crawl = math.ceil((V-B) / (A-B))
print(crawl)
[Code2]
A, B, V = map(int, input().split())
crawl = (V-B) / (A-B)
print(int(crawl)+1 if crawl % 1 > 0 else int(crawl))
추가 설명: A = 1.x일 때, A % 1 = 0.x가 나온다.
728x90
'백준 알고리즘(BOJ)' 카테고리의 다른 글
백준 알고리즘 10250 (ACM 호텔) - python (0) | 2019.10.15 |
---|---|
백준 알고리즘 15649 (N과 M(1)) - python (0) | 2019.10.15 |
백준 알고리즘 1011 (Fly me to the Alpha Centauri) - python (0) | 2019.10.15 |
백준 알고리즘 1193 (분수찾기) - python (0) | 2019.10.15 |
백준 알고리즘 2839 (설탕 배달) - python (0) | 2019.10.15 |
댓글