이동할 행성마다 빠져나가기 위해 요구하는 최소 속도가 있다.
출발하면 속도를 유지하거나 늦추기만 가능하며, 최소 속도의 정수배일 때만 그 행성을 지나갈 수 있다.
모든 행성을 지나가기 위한 최소 출발 속도를 구하는 문제
문제
서기 2XXX년, 지구가 소행성과 충돌할 위기에 처했다! 똑똑한 과학자 키파는 평행 우주를 누비며 지구를 대신할 행성을 찾는 막중한 임무를 맡게 되었다.
우리는 현재 지구
지구에는 "초고속 걷기 기계"라는, 속도를 원하는 만큼 올릴 수 있는 특수한 장치가 있다. 지구를 벗어나면 속도를 떨어뜨릴 수 있을 뿐 높일 수는 없다.
다음 지역에 가기 위해서는 원칙적으로는 필요한 속도를 정확히 맞춰야 하지만, 다행히도 평행 우주는 일정한 간격을 두고 있기 때문에 필요한 속도의 양의 정수 배로도 다음 지역으로 이동할 수 있다. 또한, 충분히 빠른 속도로 이동 중이며, 지구의 대체 행성으로 적합한지 아닌지는 도착한 뒤 바로 알 수 있기 때문에 어떤 행성에서는 도달한 뒤 속도를 유지한 채 다음 행성으로 이동할 수도 있다.
모든 1 ≤ i ≤ n에 대해, 행성
입력
첫째 줄에 n
둘째 줄에 n개의 정수
출력
수 하나를 출력한다. 이 수는 지구에서 올려야 하는 속도의 최솟값이다.
import sys
from math import lcm
N = int(sys.stdin.readline())
li = list(map(int, sys.stdin.readline().split()))
c_v = 0
# 마지막 행성 속도부터 시작해서 그 전 행성의 탈출 속도와 비교
for p_v in li[::-1]:
# 이전 행성이 요구하는 속도가 더 빠를 때는 그 속도를 저장
if c_v < p_v:
c_v = p_v
# 이전 행성이 요구하는 속도가 더 느리면서
# 약수가 아닐 때, 그 속도의 배수 중에 가장 가까운 큰 수를 속도로 저장
elif c_v % p_v:
c_v = p_v*(c_v//p_v+1)
print(c_v)
예제 입력 1
5
300 400 500 400 300
예제 출력 1
900
노트
행성 1에 가기 위해 필요한 것보다 세 배의 속도로, 행성 2의 경우 두 배의 속도로 이동하면, 지구에서는 900의 속도만 쌓으면 된다.
'IT > Python' 카테고리의 다른 글
[백준] 12981번 공 포장하기 [Python] - 그리디 0 | 2023.09.04 |
---|---|
[백준] 22993번 서든 어택 3 [Python] - 그리디 0 | 2023.09.01 |
[백준] 25706번 자전거 묘기 [Python] - 다이나믹 0 | 2023.09.01 |
[백준] 14717번 앉았다 [Python] 0 | 2023.08.31 |