[๋ฐฑ์ค 10845๋ฒ] - Queue / Python

๐Deque
โช ํ(Queue)๋ ์ ์ ์ ์ถ ๋ฐฉ์์ด๋ค.
โช ๊ทธ๋ฌ๋ ์๋ฃ์ ๊ฐ์๊ฐ ๋ง์์ง๋ฉด ํ์ ์ฐ์ฐ์ด ๋๋ ค์ง๊ธฐ ๋๋ฌธ์ ๋ฐํฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
โช ๋ฐํฌ(Deque)๋ ์๋ฐฉํฅ ํ๋ก, ์๋ค ์์ชฝ์์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋ค.
๊ทธ๋์ ๋๋ ๋ฐํฌ๋ฅผ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์๋ค.
๐ Deque์ ์ฅ์
โช ์๋ค์์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ append, pop์ด ๋งค์ฐ ๋น ๋ฅด๋ค.
โช ์คํ, ํ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
[๋ฐฑ์ค 10845๋ฒ] - Queue
https://www.acmicpc.net/problem/10845
10845๋ฒ: ํ
์ฒซ์งธ ์ค์ ์ฃผ์ด์ง๋ ๋ช ๋ น์ ์ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋ช ๋ น์ด ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋ฌธ์ ์ ๋์์์ง
www.acmicpc.net
(์ ๋ต)
from collections import deque
import sys
n=int(input())
queue=deque()
def push(x):
queue.append(x)
def pop():
return queue.popleft() if queue else -1
def size():
return len(queue)
def empty():
return 0 if queue else 1
def front():
return queue[0] if queue else -1
def back():
return queue[-1] if queue else -1
for _ in range(n):
cmd=sys.stdin.readline().split()
if cmd[0]=='push':
push(cmd[1])
if cmd[0]=='pop':
print(pop())
if cmd[0]=='size':
print(size())
if cmd[0]=='empty':
print(empty())
if cmd[0]=='front':
print(front())
if cmd[0]=='back':
print(back())
๐ Deque ๋ฉ์๋
โช deque.append(value): value๋ฅผ ์ค๋ฅธ์ชฝ ๋์ ์ฝ์ ํ๋ค.
โช deque.appendleft(value): value๋ฅผ ์ผ์ชฝ ๋์ ์ฝ์ ํ๋ค.
โช deque.pop(): ์ค๋ฅธ์ชฝ ๋ ์์๋ฅผ ๊ฐ์ ธ์ค๋ฉด์ ๋์์ ์ญ์ ํ๋ค.
โช deque.popleft(): ์ผ์ชฝ ๋ ์์๋ฅผ ๊ฐ์ ธ์ค๋ฉด์ ๋์์ ์ญ์ ํ๋ค.
โช deque.extend(array): ๋ฐฐ์ด(array)์ ์ํํ๋ฉฐ ํด๋น ์์๋ค์ ์ค๋ฅธ์ชฝ์ ์ถ๊ฐํ๋ค.
โช deque.extendleft(array): ๋ฐฐ์ด(array)์ ์ํํ๋ฉฐ ํด๋น ์์๋ค์ ์ผ์ชฝ์ ์ถ๊ฐํ๋ค.
โช deque.remove(value): value๋ฅผ ์ฐพ์์ ์ญ์ ํ๋ค.
๋ฆฌ์คํธ์ ๋นํด์ push, pop์ ๋ํด ๋น ๋ฅธ ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ง์ ํ์ธํ ์ ์์๋ค.
์๊ฐ์ด๊ณผ๋ฅผ ๋ฐฉ์งํ๊ณ ์ถ์ ๋๋ Deque๋ฅผ ์ฌ์ฉํ๋๋ก ํ์!