์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜(BOJ)_2164๋ฒˆ[์นด๋“œ ๊ฒŒ์ž„]

alswlfl 2023. 1. 1. 22:23

์นด๋“œ ๊ฒŒ์ž„ [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])  #์ตœ์ข…์ ์œผ๋กœ ๋‚จ์€ ์นด๋“œ์˜ ๋ฒˆํ˜ธ ์ถœ๋ ฅ