ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

๐Ÿšฉ ํ(queue)

 

thinking

ํฌ์ธํŠธ๋Š”  deque ๋ชจ๋“ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค!!!!!

๊ทธ๋ƒฅ pop(0)์œผ๋กœ ํ’€๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚จ


deque ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  : popleft์˜ ์‹œ๊ฐ„์ฐจ์ด ๋•Œ๋ฌธ์—

list์˜ ๊ฒฝ์šฐ pop()์œผ๋กœ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๊บผ๋‚ด๋Š” ๊ฒฝ์šฐ O(1) (์ผ์ •ํ•œ ์‹œ๊ฐ„) ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”๋ฐ, pop(0)์œผ๋กœ ๊ฐ€์žฅ ์•ž๋‹จ์— ๊ฐ’์„ ๊บผ๋‚ผ๋•Œ๋Š” list ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ฝ์–ด ์˜ค๋Š” ์‹œ๊ฐ„์ด ๋‹ฌ๋ผ์ ธ O(n) ์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ.

ํ•˜์ง€๋งŒ deque๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—, popleft()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ์˜ pop(0)๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ฃผ๋ฉด์„œ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ O(1)์ด ๊ฑธ๋ฆฐ๋‹ค.

 

์ฝ”๋“œ (pass)

from collections import deque

N = int(input())
queue = deque()

for i in range(1, N+1):
    queue.append(i)

while len(queue) > 1:
    queue.popleft()
    queue.append(queue.popleft())

print(queue.pop())

 

์‹œ๊ฐ„์ดˆ๊ณผ ๋‚œ ์ฝ”๋“œ (fail)

N = int(input())
queue = [i for i in range(1, N+1)]  # 1~N ๊นŒ์ง€ ์นด๋“œ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ

while True:  # ์ผ๋‹จ ๊ณ„์† ๋Œ๋ฆฌ๋‹ค๊ฐ€
    if len(queue) == 1:  # ์นด๋“œ ํ•œ์žฅ ๋‚จ์œผ๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ
        break

    queue.pop(0)  # ๋งจ ์•ž ์นด๋“œ ํ•œ๋ฒˆ ๋นผ์ฃผ๊ณ 
    queue.append(queue.pop(0))  # ๋‘๋ฒˆ์งธ ์นด๋“œ (๊ทธ ๋‹ค์Œ ๋งจ ์•ž ์นด๋“œ) ๋นผ์„œ ๋ฆฌ์ŠคํŠธ ๋งจ ๋’ค์— ๋„ฃ๊ธฐ

print(*queue)

 

 

ํ•œ์ค„ํ›„๊ธฐ

ํ๋ž‘ deque๋ž‘ ์—ฌํƒœ ๊ฐ™์€ ๊ฑด์ค„ ๐Ÿ˜†

๋Œ“๊ธ€