본문 바로가기

PS/백준

[백준 20055번] 컨베이어 벨트 위의 로봇(파이썬/python)

728x90

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

 

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

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

www.acmicpc.net

 

 

말 그대로 코드로 구현만 해주면된다

근데 문제가 좀 설명이 부실한듯

다른분들도 지적 하던데

로봇이 내리는 시점이 정확히 언제냐에 대한 내용이 부실하다.. 그거땜에 한참 헤맴

 

혹시나 이 문제 푸시는분들은

로봇이 내리는 로직을 

무조건 내리는칸에 로봇이 도달하면 내리게 만들어주면 문제 풀릴거임 ㅡㅡ;;

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import sys
from collections import deque
 
input = sys.stdin.readline
n, k = map(int, input().split())
dq = deque(map(int, input().split()))
robot_list = deque([0* n)
 
# 내구도가 0인 칸의 갯수
cnt = 0
rollin_cnt = 0
 
while cnt < k:
    rollin_cnt += 1
    # 1. 내리는 위치의 로봇을 내리게하고 벨트가 각 칸 위의 로봇과 함께 한칸 회전한다
    robot_list[n - 1= 0
    dq.appendleft(dq.pop())
    robot_list.appendleft(robot_list.pop())
    robot_list[n - 1= 0
    # 2. 가장 먼저 벨트에 올라간 로봇부터 이동한다!
    for i in range(n - 2-1-1):
        if robot_list[i + 1== 0 and dq[i + 1>= 1 and robot_list[i] == 1:
            robot_list[i + 1= 1
            robot_list[i] = 0
            dq[i + 1-= 1
            if dq[i + 1== 0:
                cnt += 1
    # 올리는 위치에 로봇을 올린다
    if dq[0>= 1:
        robot_list[0= 1
        dq[0-= 1
        if dq[0== 0:
            cnt += 1
 
print(rollin_cnt)
 
cs
728x90