20055번 컨베이어 벨트 위의 로봇

개발새발log·2023년 3월 28일
0

백준

목록 보기
18/36

문제

https://www.acmicpc.net/problem/20055

접근 방식

독해가 더 어려웠던 문제..🤐

막상 이해하고 나면 컨테이어 벨트와 로봇을 큐로 관리하고 요구하는 그대로 시뮬레이션 하면 된다. 뭔가 아이디어 자체가 신선하고 재밌었음.

코드

from collections import deque

n, k = map(int, input().split())
conveyer_queue = deque(list(map(int, input().split())))
robots = deque([False] * n)  # 로봇 유무 큐

step = 1
while True:
    # 회전
    conveyer_queue.rotate(1)
    robots.rotate(1)
    robots[-1] = False  # 마지막 robot drop

    # 로봇 이동
    for i in range(n - 2, -1, -1):
        if robots[i] and not robots[i + 1] and conveyer_queue[i + 1] >= 1:
            robots[i + 1] = True
            robots[i] = False
            conveyer_queue[i + 1] -= 1
    robots[-1] = False  # 마지막 robot drop

    # 로봇 새로 올리기
    if conveyer_queue[0] > 0:
        conveyer_queue[0] -= 1
        robots[0] = True

    if conveyer_queue.count(0) >= k:
        break

    step += 1

print(step)

덕분에 큐.rotate(횟수) 새로 알아간다 !

profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글