๐ก
ํ๊ต ๋์๋ฆฌ์์ ์ฃผ์ตํ๋ ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฆฐ์ง์ ์ฐธ์ฌํ๋ค๊ฐ ๋ชฐ๋๋ ๋ถ๋ถ์ ๋ํด ์์ฑํ ๊ธ์
๋๋ค.
๋ฐฑ์ค 2164๋ฒ
2164๋ฒ: ์นด๋2
N์ฅ์ ์นด๋๊ฐ ์๋ค. ๊ฐ๊ฐ์ ์นด๋๋ ์ฐจ๋ก๋ก 1๋ถํฐ N๊น์ง์ ๋ฒํธ๊ฐ ๋ถ์ด ์์ผ๋ฉฐ, 1๋ฒ ์นด๋๊ฐ ์ ์ผ ์์, N๋ฒ ์นด๋๊ฐ ์ ์ผ ์๋์ธ ์ํ๋ก ์์๋๋ก ์นด๋๊ฐ ๋์ฌ ์๋ค. ์ด์ ๋ค์๊ณผ ๊ฐ์ ๋์์ ์นด๋๊ฐ ํ ์ฅ ๋จ์ ๋๊น์ง ๋ฐ๋ณตํ๊ฒ ๋๋ค. ์ฐ์ , ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ๋ฐ๋ฅ์ ๋ฒ๋ฆฐ๋ค. ๊ทธ ๋ค์, ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ์ ์ผ ์๋์ ์๋ ์นด๋ ๋ฐ์ผ๋ก ์ฎ๊ธด๋ค.


- ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ์ฝ๋
n = int(input())
card = []
for i in range(1, n + 1):
card.append(i)
def card2(a):
while len(a) != 1:
a.pop(0)
left = a.pop(0)
a.append(left)
#card2(a)
return a[0]
print(card2(card))
โ ์ฐพ์๋ณด๋๊น ์๊ฐ๋ณต์ก๋ ๋๋ฌธ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ๋ณด์๋ค. ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ deque์๋๋ฉด ์ง์ ๊ท์น์ ์ฐพ์์ ํด๊ฒฐํ๋๋ฐ, deque๊ฐ ๋ญ์ง ๋ชฐ๋๊ธฐ์ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
deque
Stack ์ด๋ queue ์ฒ๋ผ ํ ๋ฐฉํฅ์์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์ผ์ด๋๋ ๊ฒ์ด ์๋๋ผ ์๋ฐฉํฅ์์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์ผ์ด๋๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๐ก
๋ฆฌ์คํธ์์ 0๋ฒ ์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๋ค๊ณ ์๊ฐํด๋ณด์. ์ด๋ ๋ฆฌ์คํธ ๋ด๋ถ์์๋ 0๋ฒ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ ์๋ ์์๋ค์ ํ๋์ฉ ์์ผ๋ก ๋น๊ฒจ์ฃผ๋ ์ฐ์ฐ๋ ํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ๋ฆฌ์คํธ์ ์ญ์ ์ฐ์ฐ์ O(n)์ด ๊ฑธ๋ฆฐ๋ค. ๋ฐ๋ฉด deque์ ์ญ์ ์ฐ์ฐ์ O(1)์ด๋ค. ๋ฐ๋ผ์ push, pop ์ด ์์ฃผ ์ฐ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉด list๋ณด๋ค deque๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
์ด๋ฐ ์ด์ ๋๋ฌธ์ ๋ด๊ฐ ์๊ฐํ๋ ์ฝ๋์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ๋ค.
deque ์์ฑ
from collections import deque
dq = deque('love')
print(dq)
# ์ถ๋ ฅ : deque(['l', 'o', 'v', 'e'])
์คํ๊ตฌํ : append(), pop()
dq.append('m') # ์ค๋ฅธ์ชฝ์ ๋ฃ๊ธฐ
print(dq)
# ์ถ๋ ฅ : deque(['l', 'o', 'v', 'e', 'm'])
dq.pop() # ์ค๋ฅธ์ชฝ ์์ ๋ฐํ
print(dq)
# ์ถ๋ ฅ : deque(['l', 'o', 'v', 'e'])
ํ ๊ตฌํ : appendleft(), pop(), append(), popleft()
dq.appendleft('I') # ์ผ์ชฝ์ ๋ฃ๊ธฐ
print(dq)
# ์ถ๋ ฅ : deque(['I', 'l', 'o', 'v', 'e'])
dq.append('y') # ์ค๋ฅธ์ชฝ์ ๋ฃ๊ธฐ
print(dq)
# ์ถ๋ ฅ : deque(['I', 'l', 'o', 'v', 'e', 'y'])
dq.popleft() # ์ผ์ชฝ ์์ ๋ฐํ
print(dq)
# ์ถ๋ ฅ : deque(['l', 'o', 'v', 'e', 'y'])
deque ํ์ฅ : extend(), extendleft()
dq.extend('ou') # ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ฅ
print(dq)
# ์ถ๋ ฅ : deque(['l', 'o', 'v', 'e', 'y', 'o', 'u'])
dq.extendleft('I') # ์ผ์ชฝ์ผ๋ก ํ์ฅ
print(dq)
# ์ถ๋ ฅ : deque(['I', 'l', 'o', 'v', 'e', 'y', 'o', 'u'])
๋ฆฌ์คํธ์ฒ๋ผ ์ฌ์ฉ : insert(), remove()
dq[2] = 'n' # 'o' -> 'n'
print(dq)
# ์ถ๋ ฅ : deque(['I', 'l', 'n', 'v', 'e', 'y', 'o', 'u'])
dq = deque('love')
dq.insert(0, 'I') # 0๋ฒ์งธ ํญ๋ชฉ์ 'I'์ถ๊ฐ
print(dq)
# ์ถ๋ ฅ : deque(['I', 'l', 'o', 'v', 'e'])
dq.insert(100, 'K') # 100๋ฒ์งธ ํญ๋ชฉ(์์ผ๋ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์) 'K'์ถ๊ฐ
print(dq)
# ์ถ๋ ฅ : deque(['I', 'l', 'o', 'v', 'e', 'K'])
dq.remove('K') # 'K'์ญ์ , ๋ง์ฝ ๊ฐ์ ํญ๋ชฉ์ด ์๋ค๋ฉด ์ผ์ชฝ๋ถํฐ ์ญ์ ๋จ.
print(dq)
# ์ถ๋ ฅ : deque(['I', 'l', 'o', 'v', 'e'])
deque ๋ด์ฉ ๋ฐ์ : reverse()
dq.reverse()
print(dq)
# ์ถ๋ ฅ : deque(['e', 'v', 'o', 'l', 'I'])
์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ : https://duckracoon.tistory.com/entry/ํ์ด์ฌ-collections-deque-์ฌ์ฉ๋ฒ๊ณผ-์์ฉ, https://dongdongfather.tistory.com/72
deque์ด์ฉํด์ ๋ค์ ๊ตฌํํ ์ฝ๋
from sys import stdin
from collections import deque
n = int(stdin.readline())
q = deque()
for i in range(1, n + 1):
q.append(i)
while len(q) != 1:
q.popleft()
q.append(q.popleft())
print(q[0])
Uploaded by Notion2Tistory v1.1.0