2024-10-20-LGECT-2
문제
관람차는 n개의 칸으로 이루어져있고, 한바퀴 도는데 n분이 소요된다. (관람차의 속도는 일정하고, 인접한 칸 사이의 거리도 일정하다.)
관람차의 이용객들은 각자 원하는 시간동안 관람차에 탑승한다.(지상 출입구에서만 탑승 가능) 따라서, 탑승구에 도착한 칸이 비어있거나, 먼저 탄 사람이 내리는 경우, 해당 칸에 새로운 이용객이 탑승 가능하다.
모든 사람이 관람차를 이용하고 내리려면 몇 분 이용해야하는가?
제한사항
- 1 <= 이용객 수 =
times
의 길이 <= 1,000- 1 <=
times[i]
<= 1,000 times[i]
는 i + 1번째로 줄 선 사람이 관람차를 이용하려는 시간
- 1 <=
- 1 <= 관람차의 크기 =
n
<= 500
입출력 예
times | n | result |
---|---|---|
[4, 2, 1] | 2 | 5 |
[8, 7, 6, 3, 4] | 4 | 11 |
[13, 7, 2] | 5 | 15 |
[1, 2, 3, 4 ,5, 6, 7] | 1 | 28 |
Source
from collections import deque
def calculate_time(times, n):
time_elapsed = 0
ride_state = [0] * n
q = deque(times)
ride_state[0] = q.popleft()
while q or any(ride_state):
time_elapsed += 1
for i in range(n):
if ride_state[i] > 0:
ride_state[i] -= 1
if ride_state[time_elapsed % n] == 0 and q:
ride_state[time_elapsed % n] = q.popleft()
return time_elapsed
print(calculate_time([4, 2, 1], 2))
print(calculate_time([8, 7, 6, 3, 4], 4)) # 틀림
print(calculate_time([13, 7, 2], 5))
print(calculate_time([1, 2, 3, 4 ,5, 6, 7], 1)) # 틀림