2164 : ์นด๋2#
์ค๋ฒ 4
์๊ฐ์ ํ |
๋ฉ๋ชจ๋ฆฌ์ ํ |
์ ๋ต๋น์จ |
---|---|---|
2์ด |
128MB |
50.9% |
input#
N์ฅ์ ์นด๋๊ฐ ์๋ค.
๊ฐ๊ฐ์ ์นด๋๋ ์ฐจ๋ก๋ก 1๋ถํฐ N๊น์ง์ ๋ฒํธ๊ฐ ๋ถ์ด ์์ผ๋ฉฐ,
1๋ฒ ์นด๋๊ฐ ์ ์ผ ์์, N๋ฒ ์นด๋๊ฐ ์ ์ผ ์๋์ธ ์ํ๋ก ์์๋๋ก ์นด๋๊ฐ ๋์ฌ ์๋ค.
์ด์ ๋ค์๊ณผ ๊ฐ์ ๋์์ ์นด๋๊ฐ ํ ์ฅ ๋จ์ ๋๊น์ง ๋ฐ๋ณตํ๊ฒ ๋๋ค.
์ฐ์ , ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ๋ฐ๋ฅ์ ๋ฒ๋ฆฐ๋ค.
๊ทธ ๋ค์, ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ์ ์ผ ์๋์ ์๋ ์นด๋ ๋ฐ์ผ๋ก ์ฎ๊ธด๋ค.
์๋ฅผ ๋ค์ด N=4์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ณด์.
์นด๋๋ ์ ์ผ ์์์๋ถํฐ 1234 ์ ์์๋ก ๋์ฌ์๋ค.
1์ ๋ฒ๋ฆฌ๋ฉด 234๊ฐ ๋จ๋๋ค. ์ฌ๊ธฐ์ 2๋ฅผ ์ ์ผ ์๋๋ก ์ฎ๊ธฐ๋ฉด 342๊ฐ ๋๋ค.
3์ ๋ฒ๋ฆฌ๋ฉด 42๊ฐ ๋๊ณ , 4๋ฅผ ๋ฐ์ผ๋ก ์ฎ๊ธฐ๋ฉด 24๊ฐ ๋๋ค.
๋ง์ง๋ง์ผ๋ก 2๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋๋ฉด, ๋จ๋ ์นด๋๋ 4๊ฐ ๋๋ค.
N์ด ์ฃผ์ด์ก์ ๋, ์ ์ผ ๋ง์ง๋ง์ ๋จ๊ฒ ๋๋ ์นด๋๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
1<=N<=500,000
6->4
from collections import deque
import os, sys
def step1(dq):
dq.popleft()
return dq
def step2(dq):
dq.rotate(-1)
return dq
problem_num = 2164
path = os.getcwd() + f'\\txt\\{problem_num}' + '.txt'
sys.stdin = open(path,'r')
input = sys.stdin.readline()
n = int(input)
n_dq = deque([i for i in range(1,n+1)])
while len(n_dq) != 1:
n_dq = step1(n_dq)
n_dq = step2(n_dq)
print(*n_dq)
if n_dq[0] == 4:
print('right')
else:
print('wrong')
4
right
Deque : double-ended queue#
from collections import deque
dq = deque()
dq.append([i for i in range(n)])
์ค๋ ๋ ์์ ํ๊ณ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ๋ฐํฌ์ ์์ชฝ ๋์์์ ์ถ๊ฐ(append)์ ํ(pop)์ ์์ชฝ์์ ๊ฑฐ์ ๊ฐ์
O(1)
์ฑ๋ฅ์ผ๋ก ์ง์ํ๋ค. ์ผ๋ฐ์ ์ธ ๋ฆฌ์คํธ๋O(n)
๋ฉ๋ชจ๋ฆฌ ์ด๋ ๋น์ฉmax len์ด ์ง์ ๋์ด ์์ผ๋ฉด ํญ๋ชฉ์ด ์ถ๊ฐ๋ ๋๋ง๋ค ๋ฐ๋์ชฝ ๋์์ ์ญ์ ๋๋ค.
stack์ฒ๋ผ ์ฌ์ฉํ ์๋ ์๊ณ , queue์ฒ๋ผ ์ฌ์ฉํ ์๋ ์๋ค.
method |
do |
---|---|
append |
๋ฐํฌ์ ์ค๋ฅธ์ชฝ์ x๋ฅผ ์ถ๊ฐํฉ๋๋ค. |
appendleft(x) |
๋ฐํฌ์ ์ผ์ชฝ์ x๋ฅผ ์ถ๊ฐํฉ๋๋ค. |
clear() |
๋ฐํฌ์์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๊ธธ์ด๊ฐ 0์ธ ์ํ๋ก ๋ง๋ญ๋๋ค. |
copy() |
๋ฐํฌ์ ์์ ๋ณต์ฌ๋ณธ์ ๋ง๋ญ๋๋ค. |
count(x) |
x ์ ๊ฐ์ ๋ฐํฌ ์์์ ์๋ฅผ ์ ๋๋ค. |
extend(iterable) |
iterable ์ธ์์์ ์จ ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐํฌ์ ์ค๋ฅธ์ชฝ์ ํ์ฅํฉ๋๋ค. |
extendleft(iterable) |
iterable์์ ์จ ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐํฌ์ ์ผ์ชฝ์ ํ์ฅํฉ๋๋ค.์ผ๋ จ์ ์ผ์ชฝ ์ถ๊ฐ๋ iterable ์ธ์์ ์๋ ์์์ ์์๋ฅผ ๋ค์ง๋ ๊ฒฐ๊ณผ๋ฅผ ์ค๋๋ค. |
index(x[, start[, stop]]) |
๋ฐํฌ์ ์๋ x์ ์์น๋ฅผ ๋ฐํํฉ๋๋ค (์ธ๋ฑ์ค start ๋๋ ๊ทธ ์ดํ, ๊ทธ๋ฆฌ๊ณ ์ธ๋ฑ์ค stop ์ด์ ). ์ฒซ ๋ฒ์งธ ์ผ์น๋ฅผ ๋ฐํํ๊ฑฐ๋ ์ฐพ์ ์ ์์ผ๋ฉด ValueError๋ฅผ ๋ฐ์์ํต๋๋ค. |
insert(i, x) |
x๋ฅผ ๋ฐํฌ์ i ์์น์ ์ฝ์ ํฉ๋๋ค.์ฝ์ ์ผ๋ก ์ธํด ์ ํ๋ ๊ธธ์ด์ ๋ฐํฌ๊ฐ maxlen ์ด์์ผ๋ก ์ปค์ง๋ฉด, IndexError๊ฐ ๋ฐ์ํฉ๋๋ค. |
pop() |
๋ฐํฌ์ ์ค๋ฅธ์ชฝ์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํฉ๋๋ค. ์์๊ฐ ์์ผ๋ฉด, IndexError๋ฅผ ๋ฐ์์ํต๋๋ค. |
popleft() |
๋ฐํฌ์ ์ผ์ชฝ์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํฉ๋๋ค. ์์๊ฐ ์์ผ๋ฉด, IndexError๋ฅผ ๋ฐ์์ํต๋๋ค. |
remove(value) |
value์ ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ์ ๊ฑฐํฉ๋๋ค. ์ฐพ์ ์ ์์ผ๋ฉด, ValueError๋ฅผ ๋ฐ์์ํต๋๋ค. |
reverse() |
๋ฐํฌ์ ์์๋ค์ ์ ์๋ฆฌ์์ ์์๋ฅผ ๋ค์ง๊ณ None์ ๋ฐํํฉ๋๋ค. |
rotate(n=1) |
๋ฐํฌ๋ฅผ n ๋จ๊ณ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ํฉ๋๋ค. n์ด ์์์ด๋ฉด, ์ผ์ชฝ์ผ๋ก ํ์ ํฉ๋๋ค.๋ฐํฌ๊ฐ ๋น์ด ์์ง ์์ผ๋ฉด, ์ค๋ฅธ์ชฝ์ผ๋ก ํ ๋จ๊ณ ํ์ ํ๋ ๊ฒ์ d.appendleft(d.pop())๊ณผ ๋๋ฑํ๊ณ , ์ผ์ชฝ์ผ๋ก ํ ๋จ๊ณ ํ์ ํ๋ ๊ฒ์ d.append(d.popleft())์ ๋๋ฑํฉ๋๋ค. |
maxlen |
(attribute)๋ฐํฌ์ ์ต๋ ํฌ๊ธฐ ๋๋ ์ ํ์ด ์์ผ๋ฉด None. |