일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript
- SQL
- Kotlin
- BFS
- DP
- inflearn
- 코딩테스트
- algorithm
- Color
- 프로그래머스
- codecademy
- 해슁
- 자바
- 순환
- Spring
- 클린코드
- CSS
- html
- CleanCode
- 구현
- DFS
- front-end
- Web
- SWEA
- 정렬
- 검색트리
- java
- 다이나믹 프로그래밍
- android
- 알고리즘
- Today
- Total
깡뇽
[백준] 20055번 컨베이어 벨트 위의 로봇 파이썬 본문
길이가 N인 컨베이어 벨트 / 길이가 2N인 벨트가 해당 컨베이어 벨트를 위아래로 감싸며 도는 중.
길이 1 간격으로 2N개의 칸으로 나뉨.
각 칸은 1부터 2N까지의 번호가 매겨져 있음.
벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동.
i번 칸의 내구도는 Ai / 1번 칸이 있는 위치를 "올리는 위치" / N번 칸이 있는 위치를 "내리는 위치"
로봇을 올리는 위치에 올리거나 로봇이 어떤 칸으로 이동하면 그 칸의 내구도는 즉시 1만큼 감소.
<로봇들을 건너편으로 옮기기>
1. 벨트가 칸 위에 있는 로봇과 함께 한 칸 회전.
2. 가장 먼저 벨트에 올라간 로봇부터, 벨트가 회전하는 방향으로 한 칸 이동할 수 있다면 이동. 만약 이동할 수 없다면 가만히 있기.
(1) 로봇이 이동하기 위해서는 이동하려는 칸에 로봇이 없으며, 그 칸의 내구도가 1 이상 남아 있어야 함.
3. 올리는 위치에 있는 칸의 내구도가 0이 아니면 올리는 위치에 로봇을 올림.
4. 내구도가 0인 칸의 개수가 K개 이상이라면 과정을 종료. 그렇지 않으면 1번으로 돌아감.
- 입력
1줄 : N, K
2줄 : A1, A2, ,,, A2N
- 출력
종료 시점의 단계
20055번 컨베이어 벨트 위의 로봇
출처 : https://www.acmicpc.net/problem/20055
20055번: 컨베이어 벨트 위의 로봇
길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부
www.acmicpc.net
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준] 15686번 치킨 배달 파이썬 (1) | 2022.10.04 |
---|---|
[백준] 21610번 마법사 상어와 비바라기 파이썬 (1) | 2022.10.04 |
[백준] 14891번 톱니바퀴 파이썬 (1) | 2022.10.04 |
[백준] 14503번 로봇 청소기 파이썬 (1) | 2022.10.04 |
[백준] 11399번 ATM 파이썬 (2) | 2022.04.18 |