백준

[백준 20055] 컨베이어 벨트 위의 로봇(python) deque 이용 구현

케굴 2023. 1. 1. 15:42

 

덱을 이용하여 컨베이어 벨트를 표현하였다. 

덱속에 내구도와 로봇의 존재 여부를 넣어서 덱 하나로 모든 것을 관리 하였다. 

 

from collections import deque 

# input 
N, K = map(int, input().split(" "))
belt = list(map(int, input().split(" ")))
belt_length = N*2 -1

queue = deque()
for i in belt:
  queue.append([i, False])

result = 0
while True:
  last = queue.pop()
  queue.appendleft(last)
  queue[N-1][1] = False 
  for i in range(N-2,-1,-1):
    now = queue[i]
    if now[1]:
      next_index = i + 1 
      if queue[next_index][0] > 0 and queue[next_index][1] == False:
        queue[next_index][0] -= 1
        queue[i][1] = False
        queue[next_index][1] = True
        if i == N -2:
          queue[next_index][1] = False
  if queue[0][0] > 0 and queue[0][1] == False:
    queue[0][0] -= 1
    queue[0][1] = True
  broken = 0
  for i in queue:
    if i[0] ==0:
      broken+=1 
  result +=1 
  if broken >= K:
    print(result)
    break

문제를 잘못 읽어서 1에서 타고 2N에서 내리는줄  알고 풀어서  한참 고생했다..

역시 구현 문제는 문제 잘 읽고 푸는게 시간 단축에 가장 중요한 요인인듯 하다 ..