728x90
📌 문제
https://www.acmicpc.net/problem/20055
📌 문제 접근 방법
- 문제에서 제시한 방법대로 구현을 하는 거라 어렵진 않았는데, 문제가 헷갈리게 써있었다..😥
우선 컨베이어 벨트 위에 맨 처음에는 로봇이 하나도 올려져있지 않은 상태이고,
1에서 4까지 모두 수행한 사이클이 1단계임을 숙지하고 구현해보자! - 테스트 케이스 3번과 4번에서 자꾸 틀렸었는데, 질문 게시판을 보니 '가장 먼저 벨트에 올라간 로봇부터' 라는 조건을 확인하라고 했다.
나의 경우엔 해당 조건을 잘 지키고 있었기 때문에 다른 문제를 찾아내야했다. - 결국 문제는 2가지였다.
1) 2번의 과정에서 else문을 안써서 이동하지 못한 로봇을 temp에서 누락시켰던 것
2) 2번의 과정에서 로봇이 움직일 수 있는지 판단을 할 때, not in robots이라고 써서 판단했었는데 이렇게 하면 로봇이 움직인 위치가 반영되지 않아서 움직일 수 있는 로봇도 못 움직이게 되었다. not in temp로 수정해주니 통과할 수 있었다.
📌 코드
# 백준 20055 컨베이어 벨트 위의 로봇
from collections import deque
N, K = map(int, input().split())
powers = deque(map(int, input().split()))
robots = []
answer = 0
while powers.count(0) < K:
answer += 1
# 1
powers.appendleft(powers.pop())
temp = []
for robot in robots:
if robot != N - 2:
temp.append(robot + 1)
robots = temp
# 2
temp = []
for robot in robots:
if robot+1 not in temp and powers[robot+1] > 0:
powers[robot+1] -= 1
if robot != N - 2:
temp.append(robot + 1)
else:
temp.append(robot)
robots = temp
# 3
if powers[0] > 0:
powers[0] -= 1
robots.append(0)
print(answer)
728x90
'ALGORITHM > BAEKJOON' 카테고리의 다른 글
[BOJ/Python] 13460.구슬 탈출 2 (0) | 2022.03.02 |
---|---|
[BOJ/Python] 21608.상어 초등학교 (0) | 2022.02.27 |
[BOJ/Python] 2096. 내려가기 (0) | 2021.12.08 |
[BOJ/Python] 14888. 연산자 끼워넣기 (0) | 2021.12.02 |
[BOJ/Python] 5052. 전화번호 목록 (0) | 2021.10.30 |
댓글