Data Engineering/์•Œ๊ณ ๋ฆฌ์ฆ˜ - Python

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

ddoddo201 2021. 6. 30. 18:32

 

 

 

 

๐Ÿ“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๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž!