๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[BAEKJOON python] 20055_์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด ๋ณธ๋ฌธ
๐ฆฅ ์ฝํ
/BAEKJOON
[BAEKJOON python] 20055_์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด
์ง์ง์ํ์นด 2023. 4. 8. 18:43728x90
๋ฐ์ํ
์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด
๊ธธ์ด๊ฐ N์ธ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ
๊ธธ์ด๊ฐ 2N์ธ ๋ฒจํธ๊ฐ ์ด ์ปจ๋ฒ ์ด์ด ๋ฒจํธ๋ฅผ ์์๋๋ก ๊ฐ์ธ๋ฉฐ ๋๊ณ ์๋ค
๋ฒจํธ๋ ๊ธธ์ด 1 ๊ฐ๊ฒฉ์ผ๋ก 2N๊ฐ์ ์นธ์ผ๋ก ๋๋์ด์ ธ ์์ผ๋ฉฐ, ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค
๋ฒจํธ๊ฐ ํ ์นธ ํ์ ํ๋ฉด 1๋ฒ๋ถํฐ 2N-1๋ฒ๊น์ง์ ์นธ์ ๋ค์ ๋ฒํธ์ ์นธ์ด ์๋ ์์น๋ก ์ด๋
2N๋ฒ ์นธ์ 1๋ฒ ์นธ์ ์์น๋ก ์ด๋
i๋ฒ ์นธ์ ๋ด๊ตฌ๋๋ Ai
1๋ฒ ์นธ์ด ์๋ ์์น๋ฅผ "์ฌ๋ฆฌ๋ ์์น", N๋ฒ ์นธ์ด ์๋ ์์น๋ฅผ "๋ด๋ฆฌ๋ ์์น"
์ปจ๋ฒ ์ด์ด ๋ฒจํธ์ ๋ฐ์ค ๋ชจ์ ๋ก๋ด์ ํ๋์ฉ ์ฌ๋ฆฌ๋ ค๊ณ ํ๋ค
๋ก๋ด์ ์ฌ๋ฆฌ๋ ์์น์๋ง ์ฌ๋ฆด ์ ์๋ค
์ธ์ ๋ ์ง ๋ก๋ด์ด ๋ด๋ฆฌ๋ ์์น์ ๋๋ฌํ๋ฉด ๊ทธ ์ฆ์ ๋ด๋ฆฐ๋ค
๋ก๋ด์ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์์ ์ค์ค๋ก ์ด๋ํ ์ ์๋ค
๋ก๋ด์ ์ฌ๋ฆฌ๋ ์์น์ ์ฌ๋ฆฌ๊ฑฐ๋ ๋ก๋ด์ด ์ด๋ค ์นธ์ผ๋ก ์ด๋ํ๋ฉด ๊ทธ ์นธ์ ๋ด๊ตฌ๋๋ ์ฆ์ 1๋งํผ ๊ฐ์
์ปจ๋ฒ ์ด์ด ๋ฒจํธ๋ฅผ ์ด์ฉํด ๋ก๋ด๋ค์ ๊ฑด๋ํธ์ผ๋ก ์ฎ๊ธฐ๋ ค๊ณ ํ๋ค
๋ก๋ด์ ์ฎ๊ธฐ๋ ๊ณผ์
1) ๋ฒจํธ๊ฐ ๊ฐ ์นธ ์์ ์๋ ๋ก๋ด๊ณผ ํจ๊ป ํ ์นธ ํ์
2) ๊ฐ์ฅ ๋จผ์ ๋ฒจํธ์ ์ฌ๋ผ๊ฐ ๋ก๋ด๋ถํฐ, ๋ฒจํธ๊ฐ ํ์ ํ๋ ๋ฐฉํฅ์ผ๋ก ํ ์นธ ์ด๋ํ ์ ์๋ค๋ฉด ์ด๋
๋ง์ฝ ์ด๋ํ ์ ์๋ค๋ฉด ๊ฐ๋งํ ์๋๋ค
๋ก๋ด์ด ์ด๋ํ๊ธฐ ์ํด์๋ ์ด๋ํ๋ ค๋ ์นธ์ ๋ก๋ด์ด ์์ผ๋ฉฐ, ๊ทธ ์นธ์ ๋ด๊ตฌ๋๊ฐ 1 ์ด์ ๋จ์ ์์ด์ผ ํ๋ค
3) ์ฌ๋ฆฌ๋ ์์น์ ์๋ ์นธ์ ๋ด๊ตฌ๋๊ฐ 0์ด ์๋๋ฉด ์ฌ๋ฆฌ๋ ์์น์ ๋ก๋ด์ ์ฌ๋ฆฐ๋ค
4) ๋ด๊ตฌ๋๊ฐ 0์ธ ์นธ์ ๊ฐ์๊ฐ K๊ฐ ์ด์์ด๋ผ๋ฉด ๊ณผ์ ์ ์ข ๋ฃ
๊ทธ๋ ์ง ์๋ค๋ฉด 1๋ฒ์ผ๋ก ๋์๊ฐ๋ค
์ข ๋ฃ๋์์ ๋ ๋ช ๋ฒ์งธ ๋จ๊ณ๊ฐ ์งํ ์ค์ด์๋์ง ๊ตฌํด๋ณด์
๊ฐ์ฅ ์ฒ์ ์ํ๋๋ ๋จ๊ณ๋ 1๋ฒ์งธ ๋จ๊ณ
์ฒซ์งธ ์ค์ N, K
๋์งธ ์ค์๋ A1, A2, ..., A2N
deque.append(item): item์ ๋ฐํฌ์ ์ค๋ฅธ์ชฝ ๋์ ์ฝ์
deque.appendleft(item): item์ ๋ฐํฌ์ ์ผ์ชฝ ๋์ ์ฝ์
deque.pop(): ๋ฐํฌ์ ์ค๋ฅธ์ชฝ ๋ ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋์์ ๋ฐํฌ์์ ์ญ์
deque.popleft(): ๋ฐํฌ์ ์ผ์ชฝ ๋ ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋์์ ๋ฐํฌ์์ ์ญ์
deque.extend(array): ์ฃผ์ด์ง ๋ฐฐ์ด(array)์ ์ํํ๋ฉด์ ๋ฐํฌ์ ์ค๋ฅธ์ชฝ์ ์ถ๊ฐ
deque.extendleft(array): ์ฃผ์ด์ง ๋ฐฐ์ด(array)์ ์ํํ๋ฉด์ ๋ฐํฌ์ ์ผ์ชฝ์ ์ถ๊ฐ
deque.remove(item): item์ ๋ฐํฌ์์ ์ฐพ์ ์ญ์
deque.rotate(num): ๋ฐํฌ๋ฅผ num๋งํผ ํ์ (์์๋ฉด ์ค๋ฅธ์ชฝ, ์์๋ฉด ์ผ์ชฝ)
from collections import deque
# ๊ธธ์ด๊ฐ N์ธ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ, ๋ด๊ตฌ๋๊ฐ 0์ธ ์นธ์ ๊ฐ์๊ฐ K๊ฐ
n, k = map(int, input().split())
queue = deque()
belt = list(map(int, input().split()))
# ์ปจ๋ฒ ์ด์ด ๋ฒจํธ์ ๋ด๊ตฌ์ฑ์ ์ ์ฅํ ํ
queue.extend(belt)
# ๋ก๋ด์ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ
robot = deque([0] * n)
cnt = 0
while True:
cnt += 1
# 1. ๋ฒจํธ ํ์
queue.rotate(1)
robot.rotate(1)
# ๋ก๋ด์ด ๋ด๋ ค๊ฐ๋ ๋ถ๋ถ์ด๋ 0
robot[-1] = 0
# 2. ๋ฒจํธ์์์ ๋ก๋ด ์ด๋
if 1 in robot:
for i in range(n-1, 0, -1): # ๋์์๋ถํฐ ํ์ธ
if not robot[i] and robot[i-1] and queue[i] > 0:
# ํ์ฌ ์นธ ๋ก๋ด์ด ์๊ณ ,
# ์ ์นธ์ ๋ฒจํธ ์์ ๋ก๋ด์ด ์๊ณ ,
# ํ์ฌ ์นธ ๋ด๊ตฌ๋๊ฐ 1์ด์์ผ ๋ ์ฎ๊ธฐ๊ธฐ
queue[i] -= 1 # ๋ด๊ตฌ๋ ๊น๊ณ
robot[i] = 1 # ๋ก๋ด O -> 1
robot[i-1] = 0
# ๋ด๋ฆฌ๋ ์์น์ ๋ก๋ด์ด ์๋ค๋ฉด ๋ด๋ฆฐ๋ค
robot[-1] = 0
# 3. ์ฌ๋ฆฌ๋ ์์น์ ์๋ ์นธ์ ๋ด๊ตฌ๋๊ฐ 0์ด ์๋๋ผ๋ฉด ์ฌ๋ฆฌ๋ ์์น์ ๋ก๋ด ์ฌ๋ฆฐ๋ค
if queue[0] > 0 and not robot[0]:
queue[0] -= 1
robot[0] = 1
# 4. ๋ด๊ตฌ๋๊ฐ 0์ธ ์นธ์ ๊ฐ์๊ฐ K๊ฐ ์ด์์ด๋ฉด ๊ณผ์ ์ข
๋ฃ
if queue.count(0) >= k:
print(cnt)
break
์์ ์ ๋ ฅ
3 2
1 2 1 2 1 2
์์ ์ถ๋ ฅ
2
์์ด..
๋ด๊ฐ ๊ตญ์ด๋ฅผ ๋ชปํ๊ธด ํ๋๋ฐ
๋ฌธ์ ์ดํด๋ฅผ ๋ชปํ๋ค.
ํ์ง๋ง
https://deok2kim.tistory.com/335
๋๋ถ์
์ดํด๊ฐ ๋์๋ค.
๊ฐ์ฌํฉ๋๋น :-)
728x90
๋ฐ์ํ
'๐ฆฅ ์ฝํ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON python] 19236_์ฒญ์๋ ์์ด (0) | 2023.04.08 |
---|---|
[BAEKJOON python] 16236_์๊ธฐ์์ด (0) | 2023.04.08 |
[BAEKJOON python] 19238_์คํํธ ํ์ (0) | 2023.04.08 |
[BAEKJOON python] 23290_๋ง๋ฒ์ฌ ์์ด์ ๋ณต์ (0) | 2023.04.08 |
[BAEKJOON python] 21611_๋ง๋ฒ์ฌ ์์ด์ ๋ธ๋ฆฌ์๋ (0) | 2023.04.07 |
Comments