๋ฐฑ์ค 1021๋ฒ ํ์ด์ฌ
2021. 4. 2. 21:36ใPython
์ด ๋ฌธ์ ๋ index๋ง ์ฐ๋ฉด ๊ธ๋ฐฉ ํด๊ฒฐํ ์ ์๋ค.
์ฒ์์๋ ๊ทธ๋ฅ ํ์ ๊ฐ์ฅ ์ ์์(q[0])์ ๋น๊ตํด์ ํด๊ฒฐํ๋๋ก ์ฝ๋๋ฅผ ์งฐ๋๋ ์ต์๊ฐ์ด ์๋๋ผ ์ต๋๊ฐ์ ๊ฐ๊น์ด ๊ฐ์ ๊ณ์ฐํ๊ณ ์๋ค๋ ๊ฑธ ์๊ฒ ๋์๋ค. ๊ทธ๋์ ์ด๋ป๊ฒ ํด๊ฒฐํ๋ฉด ์ข์๊น, ๊ณ ๋ฏผํ๋ค๊ฐ popํ๊ณ ์ ํ๋ ์ซ์์ ์๊ณผ ๋ค์ ๊ธธ์ด๋ฅผ ๋น๊ตํด ์งง์ ์ชฝ์ผ๋ก ์ฐ์ฐ(๋๋ฒ์งธ or ์ธ๋ฒ์งธ)์ ํ๋ฉด ๊ธ๋ฐฉ ํด๊ฒฐ๋๋ค๋ ๊ฑธ ์์๋ค.
index ํจ์๋ ์๊ฐ๋ณต์ก๋๊ฐ O(1)์ด๊ธฐ ๋๋ฌธ์ ๊ดํ ๊ฑฑ์ ํ ํ์ ์๋ค!
<๊ฒฐ๊ณผ ์ฝ๋>
from sys import stdin
from collections import deque
def firstFunc():
q.popleft()
def secondFunc(second):
q.append(q.popleft())
return second + 1
def thirdFunc(third):
q.appendleft(q.pop())
return third + 1
q = deque()
N, M = map(int, stdin.readline().split())
wantToPop=list(map(int, stdin.readline().split()))
for i in range(1,N+1): q.append(i)
second = 0
third = 0
for number in wantToPop:
while number != q[0]:
if q.index(number) <= len(q)//2:
second = secondFunc(second)
elif q.index(number) > len(q)//2:
third = thirdFunc(third)
if number == q[0]: firstFunc()
print(second + third)
'Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 1946 ํ์ด์ฌ (0) | 2021.05.04 |
---|---|
๋ฐฑ์ค 1476 ํ์ด์ฌ (0) | 2021.04.07 |
๋ฐฑ์ค 1550๋ฒ ํ์ด์ฌ (0) | 2021.03.27 |
๋ฐฑ์ค 1927๋ฒ๊ณผ ํ์ด์ฌ ํ (0) | 2021.03.26 |
ํ์ด์ฌ ๋ ํ 1์ผ์ฐจ (0) | 2021.02.26 |