문제
https://www.acmicpc.net/problem/2869
문제는 위 사이트를 참고해주세요
풀이
import math
A, B, V = map(int, input().split())
temp = V - A
inc = A - B
day = math.ceil(temp / inc)
print(day + 1)
A = 낮에 올라가는 길이, B= 저녁에 내려오는 길이, V는 정상의 높이입니다.
A(낮) | B(저녁) | V(높이) | 걸리는 DAY | TEMP(V-A) | INC(A-B) | DAY(TEMP/INC) |
2 | 1 | 5 | 4 | 3 | 1 | 3 |
3 | 1 | 8 | 4 | 5 | 2 | 2.5 |
3 | 2 | 8 | 6 | 5 | 1 | 5 |
4 | 1 | 8 | 3 | 4 | 3 | 1.33333... |
5 | 3 | 8 | 3 | 3 | 2 | 1.5 |
6 | 3 | 9 | 2 | 3 | 3 | 1 |
먼저 V-A를 해서 처음 낮에 올라갔을 때 높이와, 정상 높이를 빼줍니다.
그러면 현재 높이의 차를 알 수 있습니다.
그리고 하루 동안 움직이는 거리는 A-B의 값이기 때문에
V-A / A-B를 하면 첫 날에서 며칠이 지나야 정상에 오르는지 알 수 있습니다.
그 값은 첫날이 포함이 안돼있기 때문에 +1 해주면 답이 나옵니다.
위 표를 보시면 실제로 걸리는 일 수는 (TEMP / INC) + 1 한 것과 같습니다.
근데 소수점이 나오면 계산이 성립하지 않기 때문에 math.ceil을 사용해 올림을 해줍니다.
그러면 실제로 걸리는 일 수가 나옵니다.
결과
'IT > 알고리즘' 카테고리의 다른 글
1일 N알고리즘 - # 19 (0) | 2020.05.20 |
---|---|
1일 N알고리즘 - #18 (0) | 2020.05.20 |
1일 N알고리즘 - #16 (0) | 2020.05.18 |
1일 N알고리즘 - #15 (0) | 2020.05.18 |
1일 N알고리즘 - #14 (0) | 2020.05.17 |
댓글