-
[백준] 20055 - 컨베이어 벨트 위의 로봇 (파이썬)알고리즘/백준 2021. 9. 30. 15:56
from collections import deque import sys input = sys.stdin.readline n, k = map(int,input().split()) array = list(map(int,input().split())) chain = deque() for i in array: chain.append([i,0]) t = 0 while True: t += 1 last = chain.pop() chain.appendleft(last) chain[n-1][1] = 0 for i in range(n-2,-1,-1): if chain[i+1][1] == 0 and chain[i][1] == 1 and chain[i+1][0] > 0: chain[i+1][1] = 1 chain[i+1][0] -= 1 chain[i][1] = 0 chain[n-1][1] = 0 if chain[0][0] != 0: chain[0][1] = 1 chain[0][0] -= 1 count = 0 for i in chain: if i[0] == 0: count += 1 if count >= k: break print(t)
chain이 움직이는 걸 list로 해결하려다가 deque로 해결하였다. (훨씬 간편 소요시간도 적구)
문제 이해하는데 좀 오래걸렸다.
순서2를 어렵게 생각했는데 결국 컨베이어 1번부터 n-1번까지만 (인덱스로는 0부터 n-2) 로봇이 있을 수 있으니까
앞에 있는 애들부터 옮겨주면 된다!
PyPy3로 제출!
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 20057 - 마법사 상어와 토네이도 (파이썬) (0) 2021.10.08 [백준] 20056 - 마법사 상어와 파이어볼 (파이썬) (0) 2021.10.04 [백준] 1915 - 가장 큰 정사각형 (파이썬) (0) 2021.09.29 [백준] 17822 - 원판 돌리기 (파이썬) (0) 2021.09.28 [백준] 19238 - 스타트 택시 (파이썬) (0) 2021.09.28