백준 20055 컨베이어 벨트 위의 로봇

gmlwlswldbs·2021년 9월 30일
0

코딩테스트

목록 보기
40/130
n, k = map(int, input().split())

a = list(map(int, input().split()))
check = [False] * (2 * n)

def belt_move(a, check):
    tmp = a[-1]
    tmp_ = check[-1]
    for i in range(2*n-2, -1, -1):
        a[i + 1] = a[i]
        check[i + 1] = check[i]
    a[0] = tmp
    check[0] = tmp_
    return a, check

def robot_move(a, check):
    for i in range(2*n-2, -1, -1):
        if a[i + 1] >= 1 and check[i] == True and check[i + 1] == False:
            a[i + 1] -= 1
            check[i] = False
            check[i + 1] = True
    return a, check

cnt = 0

while a.count(0) < k:
    a, check = belt_move(a, check)
    if check[n-1] == True:
        check[n-1] = False
    a, check = robot_move(a, check)
    if check[n-1] == True:
        check[n-1] = False
    if check[0] == False and a[0] != 0:
        check[0] = True
        a[0] -= 1
    cnt += 1

print(cnt)

구현 문제(pypy로 제출). 하라는 대로 했다. 뭔 말인지 처음에 이해가 어려웠음
더 많이 풀어봐야할듯

0개의 댓글