ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/๋ฐฑ์ค
๋ฐฑ์ค: 20055 ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด
dirmathfl 2021. 4. 13. 18:49728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์๋ฎฌ๋ ์ด์ ๋ฌธ์ ์ค์์ ์ฌ์ด ํธ์ ์ํ๋ฉฐ, ๋ฌธ์ ์ ์๊ตฌํ๋ ์ฌํญ๋๋ก ๊ตฌํํ๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค. ์ปจ๋ฒ ์ด์ด ๋ฒจํธ๊ฐ ํ์ ํ๋ ๊ฒ์ `deque.rotate()`๋ฅผ ํ์ฉํ๋ฉด ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
- ๋ฒจํธ๊ฐ ํ ์นธ ํ์ ํ๋ค.
- ๊ฐ์ฅ ๋จผ์ ๋ฒจํธ์ ์ฌ๋ผ๊ฐ ๋ก๋ด๋ถํฐ, ๋ฒจํธ๊ฐ ํ์ ํ๋ ๋ฐฉํฅ์ผ๋ก ํ ์นธ ์ด๋ํ ์ ์๋ค๋ฉด ์ด๋ํ๋ค. ๋ง์ฝ ์ด๋ํ ์ ์๋ค๋ฉด ๊ฐ๋งํ ์๋๋ค.
- ๋ก๋ด์ด ์ด๋ํ๊ธฐ ์ํด์๋ ์ด๋ํ๋ ค๋ ์นธ์ ๋ก๋ด์ด ์์ผ๋ฉฐ, ๊ทธ ์นธ์ ๋ด๊ตฌ๋๊ฐ 1 ์ด์ ๋จ์ ์์ด์ผ ํ๋ค.
- ์ฌ๋ผ๊ฐ๋ ์์น์ ๋ก๋ด์ด ์๋ค๋ฉด ๋ก๋ด์ ํ๋ ์ฌ๋ฆฐ๋ค.
- ๋ด๊ตฌ๋๊ฐ 0์ธ ์นธ์ ๊ฐ์๊ฐ K๊ฐ ์ด์์ด๋ผ๋ฉด ๊ณผ์ ์ ์ข ๋ฃํ๊ณ , ์๋๋ฉด 1๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
๋ฌธ์ ์์ ์ ์๋ ์์ ๊ณผ์ ์ ์์๋๋ก ๊ตฌํํ๋ฉด ๋๋ค. ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ด๋ ค์ด ์ฌํญ์ ์์์ง๋ง `bool` ํ์ ์ ์ฌ์ฉํ๋ฉด ์๋๊ฐ ๋๋ฆฐ์ง 57% ํต๊ณก์ ๋ฒฝ์ด ์์๋ค. (57%์์ ๊ณ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.)
์ฝ๋
from sys import stdin
from collections import deque
if __name__ == '__main__':
N, K = map(int, stdin.readline().split())
A = deque(map(int, stdin.readline().split()))
robot = deque([0] * N)
stage = 0
# 4. ์ปจ๋ฒ ์ด์ด ๋ฒจํธ์ ๋ด๊ตฌ๋๊ฐ 0์ธ ๊ฒ์ด K๊ฐ ์ด์์ธ ๊ฒฝ์ฐ๊น์ง ๋ฐ๋ณต
while A.count(0) < K:
# 1. ๋ฒจํธ์ ๋ก๋ด์ ํ ์นธ ํ์
# (clockwise)
A.rotate(1)
robot.rotate(1)
# ๋ด๋ ค๊ฐ ์์น์ ๋ก๋ด์ ๋ด๋ฆผ
robot[-1] = 0
# 2. ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ ๋ก๋ด์ ์์ง์
for idx in range(N - 2, -1, -1):
# ๋ก๋ด์ด ์์ผ๋ฉด ํจ์ค
if robot[idx] == 0:
continue
# ๋ค์์นธ์ ๋ก๋ด์ด ์๊ณ ๋ด๊ตฌ๋๊ฐ ์๋ค๋ฉด, ์ฎ๊น
if robot[idx + 1] == 0 and A[idx + 1]:
A[idx + 1] -= 1
robot[idx + 1] = 1
robot[idx] = 0
# ์ด๋ ํ์๋ ๋ด๋ ค๊ฐ ๊ณณ์ ์๋ค๋ฉด ๋ด๋ฆผ
robot[-1] = 0
# 3. ์ฒซ ๋ฒ์งธ ์นธ์ ์ฌ๋ฆด ์ ์๋ค๋ฉด ์ฌ๋ฆฌ๊ธฐ.
if A[0] and robot[0] == 0:
A[0] -= 1
robot[0] = 1
stage += 1
print(stage)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 19238 ์คํํธ ํ์ (0) | 2021.04.15 |
---|---|
๋ฐฑ์ค: 20058 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด์คํฐ (2) | 2021.04.14 |
๋ฐฑ์ค: 14567 ์ ์๊ณผ๋ชฉ(Prerequisite) (0) | 2021.04.13 |
๋ฐฑ์ค: 17485 ์ง์ฐ์ ๋ฌ ์ฌํ (Large) (0) | 2021.04.09 |
๋ฐฑ์ค: 1106 ํธํ (0) | 2021.04.07 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ