๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
- ํ์ ์ deque ์ rotate ๋ฉ์๋ ์ด์ฉ
- ๋ด๊ตฌ๋ ๋ฆฌ์คํธ, ๋ฒจํธ ์์ ๋ก๋ด ๋ฆฌ์คํธ
- ์ฃผ์ด์ง ์ง๋ฌธ๋๋ก ๊ตฌํํ๋ฉด ๋๋ค.
์๊ฐ์ด๊ณผ ๋๋ฌธ์ ๊ณ ์ํ๋ ๋ฌธ์
๋ฒจํธ์ ๋งจ ๋์ ๋ก๋ด์ด ์ค๋ฉด ํญ์ ๋ด๋ ค์ค์ผํ๋ค.
๐ป์์ค ์ฝ๋
import sys
from collections import deque
input = sys.stdin.readline
N, K = map(int, input().split())
belt = deque(map(int, input().split()))
robots = deque([0]*N)
cnt = 0
while True:
cnt += 1
# 1. ๋ฒจํธ ํ์
belt.rotate()
robots.rotate()
# ๋ด๋ฆฌ๋ ์์น์ ๋ก๋ด์ด ์๋ค๋ฉด ๋ด๋ฆฐ๋ค.
robots[-1] = 0
# 2. ๋ฒจํธ์์์ ๋ก๋ด ์ด๋
if 1 in robots:
for i in range(N-1, 0, -1): # ๋์์๋ถํฐ ํ์ธ
if not robots[i] and robots[i-1] and belt[i] > 0:
# ํ์ฌ ์นธ ๋ก๋ด์ด ์๊ณ ,
# ์ ์นธ์ ๋ฒจํธ ์์ ๋ก๋ด์ด ์๊ณ ,
# ํ์ฌ ์นธ ๋ด๊ตฌ๋๊ฐ 1์ด์์ผ ๋ ์ฎ๊ธฐ๊ธฐ
belt[i] -= 1 # ๋ด๊ตฌ๋ ๊น๊ณ
robots[i] = 1 # ๋ก๋ด O
robots[i-1] = 0
# ๋ด๋ฆฌ๋ ์์น์ ๋ก๋ด์ด ์๋ค๋ฉด ๋ด๋ฆฐ๋ค.
robots[-1] = 0
# 3. ์ฌ๋ฆฌ๋ ์์น์ ์๋ ์นธ์ ๋ด๊ตฌ๋๊ฐ 0์ด ์๋๋ผ๋ฉด ์ฌ๋ฆฌ๋ ์์น์ ๋ก๋ด ์ฌ๋ฆฐ๋ค.
if belt[0] > 0 and not robots[0]:
belt[0] -= 1
robots[0] = 1
# 4. ๋ด๊ตฌ๋๊ฐ 0์ธ ์นธ์ ๊ฐ์๊ฐ K๊ฐ ์ด์์ด๋ฉด ๊ณผ์ ์ข
๋ฃ
if belt.count(0) >= K:
print(cnt)
break
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋ฐ์ํ
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ๋ก๊ทธ๋๋จธ์ค - ํผ๋ก๋(์ํด๋ฆฌ์ฑ๋ฆฐ์ง) (0) | 2022.02.04 |
---|---|
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ(2022 KAKAO BLIND RECRUITMENT) (0) | 2022.02.03 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ํด๋ฆฌ์ฑ๋ฆฐ์ง 7์ฃผ์ฐจ (0) | 2021.10.02 |
[python] ๋ฐฑ์ค - 1018. ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (0) | 2021.09.22 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ํด๋ฆฌ์ฑ๋ฆฐ์ง 7์ฃผ์ฐจ (0) | 2021.09.17 |