Algorithm/Python

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

🥭맹2 2021. 2. 2. 02:21
1. 문제

 

www.acmicpc.net/problem/20055

 

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

길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부

www.acmicpc.net

 

2. 접근방법

 

문제를 이해하는게 어려웠던 문제

 

3. 파이썬 코드

 

N, K = map(int, input().split())
boxes = list(map(int, input().split()))
robots = [0] * N
cnt = 0

while True:
    cnt += 1
    boxes = [boxes[-1]] + list(boxes[0:len(boxes)-1])
    robots = [robots[-1]] + list(robots[0:len(robots)-1])
    if robots[-1] == 1:
        robots[-1] = 0

    for i in range(len(robots)-1, -1, -1):
        if robots[i]:
            if i+1 < N-1 and boxes[i+1] > 0 and robots[i+1] != 1:
                robots[i] = 0
                robots[i+1] = 1
                boxes[i+1] -= 1
            elif i+1 == N-1 and boxes[i+1] > 0:
                boxes[i+1] -= 1
                robots[i] = 0

    if robots[0] == 0 and boxes[0] > 0:
        robots[0] = 1
        boxes[0] -= 1

    if boxes.count(0) >= K:
        print(cnt)
        break

 

 

4. 마치며

 

나는 box랑 robot을 직접 옮겨서 풀었는데 이렇게 말고 인덱스 이용해서 푸는게 나을 거 같다는 생각을 했다 !!!!!!!!!!!!

다시 풀어볼것 . . . .

'Algorithm > Python' 카테고리의 다른 글

[알고리즘] 순열  (0) 2021.02.07
[백준 16236] 아기 상어  (2) 2021.02.03
[백준 17471] 게리맨더링  (0) 2021.02.01
[백준 17070] 파이프 옮기기 1  (0) 2021.01.31
[백준 1929] 소수구하기  (1) 2021.01.31