๋ฐ์ํ
๋ฌธ์
์ ์ถ์ฝ๋
N, M = map(int, input().split())
P = list(map(int, input().split()))
q = [i for i in range(1, N+1)]
cnt = 0
for i in range(M):
# ์์น 0๊ณผ์ ๊ฑฐ๋ฆฌ ์ฐจ์ด๋ก ์ผ์ชฝ์ผ๋ก or ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ ์ง๋ฅผ ๊ฒฐ์
if q.index(P[i]) < len(q)-q.index(P[i]):
while True:
if q[0] == P[i]:
del q[0]
break
else:
q.append(q[0])
del q[0]
cnt += 1
else:
while True:
if q[0] == P[i]:
del q[0]
break
else:
q.insert(0, q[-1])
del q[-1]
cnt += 1
print(cnt)
๋ฆฌ์คํธ q์ 0๋ฒ์งธ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฝ์๋ด๋ ค๋ ์์์ ๋น๊ตํ์ฌ ๋์ผํ๋ค๋ฉด q[0]์ ์ญ์ ํ๊ณ ๊ฐ์ง ์๋ค๋ฉด p[0]๊ณผ ๊ฐ์์ง ๋๊น์ง ๋ฐ๋ณตํ์ฌ ์ํํ๋ค.
์ฒ์์ ๋ฆฌ์คํธ๋ง์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ์์ผ๋ deque(๋ฐํฌ)๋ฅผ ๊ณต๋ถํ๋ค๋ณด๋ ์กฐ๊ธ๋ง ์์ ํ๋ฉด deque๋ก๋ ํ ์ ์๊ฒ ๋จ ์๊ฐ์ด ๋ค์๋ค.
๋ฐ๋ผ์ ์ด ๋ฌธ์ ๋ฅผ Deque๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ ๊ฐ์ด ํ ์ ์๋ค.
from collections import deque
N, M = map(int, input().split())
P = list(map(int, input().split()))
q = deque([i for i in range(1, N+1)])
cnt = 0
for i in range(M):
q_index = q.index(P[i])
if q_index < len(q)-q_index:
while True:
if q[0] == P[i]:
q.popleft()
break
else:
q.append(q.popleft())
cnt += 1
else:
while True:
if q[0] == P[i]:
q.popleft()
break
else:
q.appendleft(q.pop())
cnt += 1
print(cnt)
ํ์ด์ฌ์ collections๋ชจ๋์ deque(Double-ended queue)์ ํตํด ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ ์ ์์ด list์ ์๊ณผ ๋ค ๋ชจ๋์์ ์์์ ์ถ๊ฐ์ ์ญ์ ๊ฐ ์ผ์ด๋๋ค๋ฉด, deque ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ์ด ๋ ์ข๋ค.
๋ฐ์ํ
'๐ Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11866๋ฒ: ์์ธํธ์ค ๋ฌธ์ 0(Python) (0) | 2022.03.31 |
---|---|
[๋ฐฑ์ค] 2851๋ฒ: ์ํผ๋ง๋ฆฌ์ค(Python) (0) | 2022.03.31 |
[๋ฐฑ์ค] 2460๋ฒ: ์ง๋ฅํ ๊ธฐ์ฐจ 2(Python) (0) | 2022.03.23 |
[๋ฐฑ์ค] 11399๋ฒ: ATM(Python) (0) | 2022.03.23 |
[๋ฐฑ์ค] 10871๋ฒ: X๋ณด๋ค ์์ ์(Python) (0) | 2022.03.14 |