BOJ 17451

Kaydenna92·2022년 7월 16일
0

Algorithm

목록 보기
17/36
# 그리디 알고리즘
# 마지막 행성에서는 그 행성의 속도와 같은 값이면 된다. (최소값을 구해야 하기 때문에.)

# 현재의 속도가 i 행성의 속도보다 작으면 현재 속도를 i 행성 속도로 재 할당 -> 정방향으로 한다면 속도를 떨어뜨린 것과 같다.

# 현재의 속도가 i 행성의 속도보다 크면? 2가지 경우... 양의 정수 배로 재 할당해야 한다. -> 2가지 경우로 나뉜다. 
# -> 1. 현재 속도가 i 행성에 도달하기 위한 속도의 양의 배수라면? 그대로, 
# -> 2. i행성의 속도의 양의 배수가 아니면, 현재 속도값보다 크게 하면서, i 행성속도의 양의 배수로 만들기



N = int(input())
speed = list(map(int, input().split()))
present = speed[-1]
# 역방향 탐색
for i in range(N-2, -1, -1): 
    if speed[i] > present: # 행성속도가 현재속도보다 크다면?
        present = speed[i] # 현재속도를 행성속도로 재할당

    else: # 행성속도가 현재속도보다 작다면?
        if present % speed[i]: # 양의 정수배가 되지 않는다면 아래 코드블록을 실행 
            present = (present//speed[i]+1) * speed[i] # 현재 속도를 정수배이면서, 최소값으로 재할당.

print(present)
profile
persistently

0개의 댓글