๐Ÿšถโ€โ™‚๏ธRoad to ์ฝ”ํ…Œ(5) - ํ

์•ˆํƒœํ˜„ยท2024๋…„ 12์›” 19์ผ

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
5/15

๋ณธ ๊ฒŒ์‹œ๋ฌผ์€ BaaarkingDog๋‹˜์˜ ์‹ค์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

[์ถ”๊ฐ€] ์šฉ๊ฐํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[์ถ”๊ฐ€] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ - ํŒŒ์ด์ฌ ํŽธ

ํ

ํ•œ์ชฝ ๋์—์„œ ์›์†Œ๋ฅผ ๋„ฃ๊ณ  ๋ฐ˜๋Œ€์ชฝ ๋์—์„œ ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
๋จผ์ € ๋“ค์–ด๊ฐ„ ์›์†Œ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ์ด๋‹ค. FIFO

์„ฑ์งˆ

  • ์›์†Œ์˜ ์ถ”๊ฐ€๊ฐ€ O(1)
  • ์›์†Œ์˜ ์ œ๊ฑฐ๊ฐ€ O(1)
  • ์ œ์ผ ์•ž/๋’ค์˜ ์›์†Œ ํ™•์ธ์ด O(1)
  • ์ œ์ผ ์ƒ๋‹จ์ด ์•„๋‹Œ ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์˜ ํ™•์ธ ๋ฐ ๋ณ€๊ฒฝ์ด ์›์น™์  ๋ถˆ๊ฐ€๋Šฅ.
    ํ์—์„œ ์ถ”๊ฐ€๋˜๋Š” ๊ณณ์„ rear, ์ œ๊ฑฐ๋˜๋Š” ์ชฝ์„ front๋ผ๊ณ  ํ•œ๋‹ค.

push(enqueue)๋ฅผ ํ•  ๋•Œ๋Š” rear๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ , pop(dequeue)๋ฅผ ํ•˜๋ฉด front๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค.

์—ฐ์Šต๋ฌธ์ œ - ๋ฐฑ์ค€ 10845

import sys

queue=[]
head=0
rear=0


def push(queue,item):
  global rear
  queue.append(item)
  rear+=1

def pop(queue):
  global head
  if len(queue)==0:
    return print(-1)
  else:
    head+=1
    return print(queue.pop(0))

def size(queue):
  return print(len(queue))

def empty(queue):
  if len(queue)==0:
    return print(1)
  else:
    return print(0)
  
def front(queue):
  if len(queue)==0:
    return print(-1)
  else:
    return print(queue[0])
    

def back(queue):
  if len(queue)==0:
    return print(-1)
  else:
    return print(queue[-1])
    
    
  
N=int(sys.stdin.readline())
for _ in range(N):
  a=sys.stdin.readline().split()
  if a[0]=='push':
    push(queue,int(a[1]))
  elif a[0]=='size':
    size(queue)
  elif a[0]=='empty':
    empty(queue)
  elif a[0]=='front':
    front(queue)
  elif a[0]=='back':
    back(queue)
  elif a[0]=='pop':
    pop(queue)
profile
๊ณ ๊ฐ์—๊ฒŒ ์‹ ๋ขฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์•ˆํƒœํ˜„์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€