[백준] 컨베이어 벨트 위의 로봇 (20055)

크타·2022년 11월 28일
0

백준

목록 보기
7/11

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

삼성역량 SW 역량 기출 문제이다.
처음에 문제 해석하는데 헷갈려서 시간이 조금 소모되었다.
1. "컨테이너벨트"와 "로봇"이 모두 rotate(1) 한다.
2. 만약, 해당 로봇의 다음 칸의 컨테이너 벨트 값이 1이상이면 해당 값을 -= 1 하고 로봇의 위치도 옮겨준다.
3. 컨테이너벨트의 0번째 값이 1이상이면 로봇을 append하고, -=1 해준다.
4. 0을 count한다.

유의 사항은, 1번 2번 진행 후 로봇을 바로바로 내려줘야 한다는 점이다.

from collections import deque

n, k = map(int, input().split())
container = deque(map(int, input().split()))
robots = []
cnt = 1
while 1:
    # 1번
    container.rotate(1)
    for idx in range(len(robots)):
        robots[idx] += 1
    # 내리기
    if n - 1 in robots:
        robots.remove(n - 1)
    # 2번
    for idx, robot in enumerate(robots):
        if container[robot + 1] and robots[idx] + 1 not in robots:
            container[robot + 1] -= 1
            robots[idx] += 1

    # 내리기
    if n - 1 in robots:
        robots.remove(n - 1)
    # 3번
    if container[0]:
        robots.append(0)
        container[0] -= 1

    # 4번
    if container.count(0) >= k:
        break
    cnt += 1
print(cnt)

0개의 댓글