일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- kubernetes
- node.js
- 백준
- es6
- 프론트엔드
- 이슈
- 가상화
- 솔리디티
- k8s
- 파이썬
- 백엔드
- 쿠버네티스
- 알고리즘
- HTML
- 자바스크립트
- JavaScript
- docker
- react
- next.js
- 리액트
- BFS
- AWS
- 웹
- 타입스크립트
- 클라우드
- TypeScript
- 컴퓨터공학
- 블록체인
- 이더리움
- CSS
Archives
- Today
- Total
즐겁게, 코드
BOJ 20055번 - 컨베이어 벨트 위의 로봇 본문
애매한 점을 하나 정리해드리면, N번째 지점은 밟자마자(발판이 움직이든 로봇이 움직이든) 내려간다고 생각하시면 됩니다.
또, 로봇이 전진하기 위해 현재 칸에 로봇이 있어야 하고 다음 칸에는 로봇이 있어서는 안되는 걸 잊으면 안됩니다!
(이걸 처리하지 않으면 세 번째, 네 번째 케이스에서 걸립니다 ㅠㅠㅠ)
if belt[N - i] > 0 and robot[N - i - 1] == True and robot[N - i] == False:
[정답 코드 - Python]
from collections import deque
N, K = map(int, input().split())
belt = deque(map(int, input().split()))
robot = deque([False] * (2 * N))
def run():
step = 0
while 1:
step += 1
# 벨트 한칸 이동
belt.appendleft(belt.pop())
robot.appendleft(robot.pop())
if robot[N - 1] == True:
robot[N - 1] = False
# 로봇 한칸 이동
for i in range(1, N):
if belt[N - i] > 0 and robot[N - i -
1] == True and robot[N - i] == False:
robot[N - i] = robot[N - i - 1]
robot[N - i - 1] = False
belt[N - i] -= 1
if robot[N - 1] == True:
robot[N - 1] = False
# 로봇 올리고
if robot[0] == False and belt[0] > 0:
robot[0] = True
belt[0] -= 1
if belt.count(0) >= K:
return step
print(run())
뭔가 딱 봤을때 "이거 내가 풀 수 있을거 같은데?" 로 시작했다가 생각보다 시간을 많이 잡아먹은 문제였습니다.
그래도 체감상 동난이도의 DP 문제들보다는 시뮬레이션 쪽이 쉬운 것 같네요!
반응형
'💯 알고리즘 > 백준 온라인 저지' 카테고리의 다른 글
BOJ 1051번 - 숫자 정사각형 (0) | 2021.04.24 |
---|---|
BOJ 1895번 - 필터 (0) | 2021.04.24 |
BOJ 7576번 - 토마토 (1) | 2021.04.14 |
BOJ 1935번 - 후위 표기식 2 (0) | 2021.04.14 |
BOJ 2468번 - 안전 영역 (0) | 2021.04.12 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆