Potato
μ•ˆλ…•ν•˜μ„Έμš”, κ°μž‘λ‹ˆλ‹€?πŸ₯” ^___^ 😺 github λ°”λ‘œκ°€κΈ° πŸ‘‰πŸ»

Algorithm/Basic

[자료ꡬ쑰] μŠ€νƒ, 큐 (feat. 파이썬)

감자 πŸ₯” 2021. 9. 13. 16:28
λ°˜μ‘ν˜•

 

1. 큐 (Queue)

1.1 큐 (queue)λž€?

  • κ°€μž₯ λ¨Όμ € 넣은 데이터λ₯Ό κΊΌλ‚Ό 수 μžˆλŠ” ꡬ쑰
  • λŒ€κΈ°ν–‰λ ¬μ„ 생각, λ¨Όμ € κΈ°λ‹€λ¦° μ‚¬λžŒμ΄ λ¨Όμ € ν˜œνƒμ„ λ°›λŠ”λ‹€
  • FIFO (FIrst In, First Out) 방식 = LILO (Last In, Last Out) 방식

 

1.2 큐의 ꡬ쑰

 

1.3 νλŠ” μ–΄λ””μ„œ 많이 μ“°μΌκΉŒ?

  • νλŠ” 주둜 μš΄μ˜μ²΄μ œμ—μ„œ λ©€ν‹°νƒœμŠ€ν‚Ήμ„ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œ ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ₯΄λ§ 방식을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ 많이 쓰인닀

 

1.4 큐의 μš©μ–΄

  • Enqueue (인큐) = 데이터λ₯Ό λ„£λŠ” κΈ°λŠ₯
  • Dequeue (디큐) = 데이터λ₯Ό κΊΌλ‚΄λŠ” κΈ°λŠ₯ (νμ—μ„œ λ°μ΄ν„°λŠ” μ‚­μ œλœλ‹€.)

 

1.5 νŒŒμ΄μ¬μ—μ„œ Queue κ΅¬ν˜„ν•˜κΈ°

νŒŒμ΄μ¬μ—μ„œ 인큐와 λ””νλŠ” put, get으둜 κ΅¬ν˜„ν•  수 μžˆλ‹€.

import queue

#큐 생성
q = queue.Queue()

#인큐
q.put('hi')
q.put(121)

#큐 μ‚¬μ΄μ¦ˆ 좜λ ₯
q.qsize()
# κ²°κ³ΌλŠ” ; 2 // hi, 121 λ“€μ–΄μžˆμŒ

#디큐
q.get() # 'hi' 좜λ ₯
q.get() # 121 좜λ ₯
# FIFO 정책을 따름

 

2. μŠ€νƒ (stack)

2.1 μŠ€νƒ(stack) μ΄λž€

  • 데이터λ₯Ό μ œν•œμ μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλŠ” ꡬ쑰
  • ν•œμͺ½ κΈ‘μ—μ„œλ§Œ 데이터λ₯Ό λ„£κ±°λ‚˜ λΉΌλŠ” ꡬ쑰
  • LIFO (Last In, First Out) νλž‘ μ • λ°˜λŒ€μ˜ 정책을 λ”°λ₯Έλ‹€.

 

2.2 μŠ€νƒμ˜ ꡬ쑰

 

2.3 μŠ€νƒμ€ μ–Έμ œ μ‚¬μš©ν• κΉŒ?

  • 컴퓨터 λ‚΄λΆ€μ˜ ν”„λ‘œμ„ΈμŠ€ ꡬ쑰의 ν•¨μˆ˜ λ™μž‘ λ°©μ‹μ—μ„œ μ‚¬μš©

 

2.4 μŠ€νƒμ˜ νŠΉμ§•

  1. μž₯점
    • ꡬ쑰가 λ‹¨μˆœν•΄μ„œ κ΅¬ν˜„μ΄ 쉽닀. 
    • λ°μ΄ν„°μ˜ μ €μž₯, μ½λŠ” 속도가 λΉ λ₯΄λ‹€.
  2. 단점
    • λ°μ΄ν„°μ˜ μ΅œλŒ€ 개수λ₯Ό 미리 μ •ν•΄μ•Όν•œλ‹€.
    • μ΅œλŒ€μΉ˜λ₯Ό μ„€μ •ν•΄μ•Όν•΄μ„œ λΉ„μ–΄μžˆλŠ” 곡간이 있으면 κ³΅κ°„μ˜ λ‚­λΉ„κ°€ 생긴닀.
    • 파이썬의 μž¬κ·€ν•¨μˆ˜λ₯Ό ν†΅ν•œ μŠ€νƒμ˜ κ΅¬ν˜„μ€ 1000λ²ˆκΉŒμ§€λ§Œ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€.

 

2.5 μŠ€νƒμ˜ μš©μ–΄

  • push() = 데이터λ₯Ό μŠ€νƒμ— λ„£λŠ” 것 ( 파이썬의 listμ—μ„œλŠ” append와 λ™μΌν•œ κΈ°λŠ₯을 κ°–λŠ”λ‹€.)
  • pop() = 데이터λ₯Ό ν•˜λ‚˜μ”© κΊΌλ‚΄λŠ” ν•¨μˆ˜. ( list κ΅¬μ‘°μ—μ„œλ„ popμ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.) κ°€μž₯ λ§ˆμ§€λ§‰μ— μžˆλŠ” 단어가 λ‚˜μ˜€κ³ , pop(0)으둜 κ°€μž₯ 처음 μˆ˜λ„ 뽑을 수 μžˆλ‹€. popλ˜μ–΄μ§„ λ°μ΄ν„°λŠ” μŠ€νƒ(리슀트)μ—μ„œ μ‚­μ œλœλ‹€)

 

λ°˜μ‘ν˜•