๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ(BOJ)_2164๋ฒ[์นด๋ ๊ฒ์]
์นด๋ ๊ฒ์ [2164๋ฒ]
Q. N์ฅ์ ์นด๋๊ฐ ์๋ค. ๊ฐ๊ฐ์ ์นด๋๋ ์ฐจ๋ก๋ก 1๋ถํฐ N๊น์ง์ ๋ฒํธ๊ฐ ๋ถ์ด ์์ผ๋ฉฐ, 1๋ฒ ์นด๋๊ฐ ์ ์ผ ์์, N๋ฒ ์นด๋๊ฐ ์ ์ผ ์๋์ธ ์ํ๋ก ์์๋๋ก ์นด๋๊ฐ ๋์ฌ ์๋ค.
์ด์ ๋ค์๊ณผ ๊ฐ์ ๋์์ ์นด๋๊ฐ ํ ์ฅ ๋จ์ ๋๊น์ง ๋ฐ๋ณตํ๊ฒ ๋๋ค. ์ฐ์ , ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ๋ฐ๋ฅ์ ๋ฒ๋ฆฐ๋ค. ๊ทธ ๋ค์, ์ ์ผ ์์ ์๋ ์นด๋๋ฅผ ์ ์ผ ์๋์ ์๋ ์นด๋ ๋ฐ์ผ๋ก ์ฎ๊ธด๋ค.
์๋ฅผ ๋ค์ด N=4์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ณด์. ์นด๋๋ ์ ์ผ ์์์๋ถํฐ 1234 ์ ์์๋ก ๋์ฌ์๋ค. 1์ ๋ฒ๋ฆฌ๋ฉด 234๊ฐ ๋จ๋๋ค. ์ฌ๊ธฐ์ 2๋ฅผ ์ ์ผ ์๋๋ก ์ฎ๊ธฐ๋ฉด 342๊ฐ ๋๋ค. 3์ ๋ฒ๋ฆฌ๋ฉด 42๊ฐ ๋๊ณ , 4๋ฅผ ๋ฐ์ผ๋ก ์ฎ๊ธฐ๋ฉด 24๊ฐ ๋๋ค. ๋ง์ง๋ง์ผ๋ก 2๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋๋ฉด, ๋จ๋ ์นด๋๋ 4๊ฐ ๋๋ค.
N์ด ์ฃผ์ด์ก์ ๋, ์ ์ผ ๋ง์ง๋ง์ ๋จ๊ฒ ๋๋ ์นด๋๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
1๋ฒ์งธ ์ค์ ์ ์ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
1๋ฒ์งธ ์ค์ ๋จ๋ ์นด๋์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค.

๋ฌธ์ ๋ถ์
ํ์ ํํ ์ดํด! → ํ์ด์ฌ์์๋ deque์ด์ฉ

์๋์ฝ๋ ์์ฑ
1. ์นด๋ ๊ฐ์ ์
๋ ฅ, ์นด๋ ๊ฐ์=N
2. deque๋ก ํ ๋ง๋ค๊ธฐ, ํ=mydeque
3. for i in N: ํ์ 1๋ถํฐ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฃ๊ธฐ
4. append()์ด์ฉ
5. while len(mydeque)!=1: mydeque์ ์นด๋๊ฐ 1์ฅ๋ง ๋จ์ ๋๊น์ง ๋ฐ๋ณต
6. mydeque.popleft() ํ์๋ฒ์งธ๋ ๊ทธ๋ฅ ์ ๊ฑฐ
7. num=mydeque.popleft() ์ง์๋ฒ์งธ๋ ์ ๊ฑฐํ ๋ num์ ์ ์ฅํ ํ
8. mydeque.append(num) ๋ฑ์ ๋งจ ๋ค์ ๋ค์ ๋ฃ๊ธฐ
9. ๊ฒฐ๊ณผ๊ฐ: ์ต์ข
์ ์ผ๋ก ๋จ์ ์นด๋ ๋ฒํธ
์ฝ๋ ๊ตฌํ
#2164๋ฒ ์นด๋ ๊ฒ์
from collections import deque
N=int(input()) #์นด๋ ๊ฐ์ ์
๋ ฅ
mydeque=deque()
for i in range(1, N+1):
mydeque.append(i)
while len(mydeque) != 1 : #๋ฑ์ ์นด๋ ํ ์ฅ๋ง ๋จ์ ๋๊น์ง ๋ฐ๋ณต
mydeque.popleft() #ํ์ ๋ฒ์งธ๋ ์นด๋ ๊ทธ๋ฅ ์ ๊ฑฐ
num=mydeque.popleft() #์ง์ ๋ฒ์งธ์ ์นด๋๋ num์ ์ ์ฅํ ํ
mydeque.append(num) #๋ฑ์ ๋ง์ง๋ง์ ๋ค์ ์ฝ์
print(mydeque[0]) #์ต์ข
์ ์ผ๋ก ๋จ์ ์นด๋์ ๋ฒํธ ์ถ๋ ฅ