J1Yun
ZU-TECHLOG
J1Yun
전체 방문자
였늘
μ–΄μ œ
  • πŸ“‘ Category (135)
    • Algorithm (61)
      • πŸ“š Concept (6)
      • πŸ“˜ Baekjoon Judge (53)
      • πŸ“— Programmers (2)
    • Computer Science (42)
      • πŸ”’ Operating System (14)
      • πŸ“‘ Network (15)
      • πŸ’Ύ Database (8)
      • 🧩 Design Pattern (4)
      • πŸ”‘ Security (1)
    • Activities (12)
      • 🦁 λ©‹μŸμ΄μ‚¬μžμ²˜λŸΌ 9κΈ° (6)
      • πŸ’» SWλ§ˆμ—μŠ€νŠΈλ‘œ 13κΈ° (6)
    • Infra (1)
      • ☁️ AWS (1)
    • Languages (1)
      • πŸ’™ Python (1)
    • Backend (7)
      • πŸ”΅ Django (4)
      • 🟒 Node.js (3)
    • Ect. (8)
      • πŸ’¬ Talk (0)
      • πŸ—‚οΈ 개발직ꡰ μ·¨μ—… μ€€λΉ„μžλ£Œ (8)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

250x250
hELLO Β· Designed By μ •μƒμš°.
J1Yun

ZU-TECHLOG

[자료ꡬ쑰] μš°μ„ μˆœμœ„ 큐(Priority Queue/Heapq) κ΅¬ν˜„ - 파이썬(Python)
Algorithm/πŸ“š Concept

[자료ꡬ쑰] μš°μ„ μˆœμœ„ 큐(Priority Queue/Heapq) κ΅¬ν˜„ - 파이썬(Python)

728x90

μš°μ„ μˆœμœ„ νλž€?

  μš°μ„ μˆœμœ„ νλŠ” λ¨Όμ € λ“€μ–΄μ˜¨ 데이터가 λ¨Όμ € μ²˜λ¦¬λ˜λŠ” 일반적인 큐와 달리, μš°μ„ μˆœμœ„κ°€ 높은 데이터뢀터 μ²˜λ¦¬λ˜λŠ” μžλ£Œκ΅¬μ‘°μ΄λ‹€. λ°°μ—΄, μ—°κ²°λ¦¬μŠ€νŠΈ, νž™(Heap)으둜 λͺ¨λ‘ κ΅¬ν˜„ν•  수 μžˆμ§€λ§Œ μΌλ°˜μ μœΌλ‘œλŠ” μ‹œκ°„λ³΅μž‘λ„κ°€ 적은 νž™(Heap)을 μ‚¬μš©ν•œλ‹€.

 

νž™(Heap)

  μ΅œμ†Ÿκ°’, μ΅œλŒ“κ°’μ„ μ°Ύμ•„λ‚΄λŠ” 연산을 λΉ λ₯΄κ²Œν•˜κΈ° μœ„ν•΄ κ³ μ•ˆλœ 완전이진 트리의 일쒅인 μžλ£Œκ΅¬μ‘°μ΄λ‹€. νž™μ€ μ΅œμ†Œ νž™κ³Ό μ΅œλŒ€ νž™μœΌλ‘œ ꡬ뢄할 수 μžˆλ‹€.

 

- μ΅œμ†Œ νž™: λ£¨νŠΈλ…Έλ“œκ°€ κ°€μž₯ μž‘μ€ 값을 κ°€μ§€λ©°, 항상 λΆ€λͺ¨λ…Έλ“œλŠ” μžμ‹λ…Έλ“œλ³΄λ‹€ μž‘μ€ 값을 가짐

μ΅œμ†Œ νž™ μ˜ˆμ‹œ

 

- μ΅œλŒ€ νž™: λ£¨νŠΈλ…Έλ“œκ°€ κ°€μž₯ 큰 값을 κ°€μ§€λ©°, 항상 λΆ€λͺ¨λ…Έλ“œλŠ” μžμ‹λ…Έλ“œλ³΄λ‹€ 큰 값을 가짐

μ΅œλŒ€ νž™ μ˜ˆμ‹œ

 

μš°μ„ μˆœμœ„ 큐 κ΅¬ν˜„ (파이썬)

- PriorityQueue

from queue import PriorityQueue

pq = PriorityQueue()

pq.put(1)
pq.put(3)
pq.put(2)

pq.get() # 1
pq.get() # 2
pq.get() # 3

- heapq

import heapq

pq = []

heapq.heappush(pq, 1)
heapq.heappush(pq, 3)
heapq.heappush(pq, 2)

heapq.heappop(pq) # 1
heapq.heappop(pq) # 2
heapq.heappop(pq) # 3

 

  파이썬 μš°μ„ μˆœμœ„ 큐 κ΅¬ν˜„μ—μ„œ heapqκ°€ PriorityQueue보닀 μ‹€ν–‰μ‹œκ°„μ΄ 적게 κ±Έλ € heapqλ₯Ό 일반적으둜 많이 μ‚¬μš©ν•œλ‹€. 또, PriorityQueue와 heapqλŠ” μ΅œμ†Œ νž™λ§Œ λ‹€λ£° 수 있기 λ•Œλ¬Έμ— 큰 μˆ˜λΆ€ν„° pop ν•˜κ³ μ‹Άμ„ λ•ŒλŠ” - λΆ€ν˜Έλ₯Ό λΆ™ν˜€ pushν•˜λ©΄ λœλ‹€.

heappush()와 heappop() λͺ¨λ‘ O(logN)의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ°–λŠ”λ‹€.

728x90

'Algorithm > πŸ“š Concept' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[자료ꡬ쑰] λ‹¨μˆœ/μ›ν˜•/이쀑 μ—°κ²°λ¦¬μŠ€νŠΈ(Linked List) κ΅¬ν˜„ - 파이썬(Python)  (0) 2023.03.07
[μ•Œκ³ λ¦¬μ¦˜] 기쀀에 따라 μ •λ ¬(sort/sorted) - 파이썬(Python)  (0) 2021.08.29
[μ•Œκ³ λ¦¬μ¦˜] λ²”μœ„λ₯Ό λ°˜μ”© μ’ν˜€κ°€λŠ” 이진 탐색 - 파이썬(Python)  (0) 2021.07.31
[μ•Œκ³ λ¦¬μ¦˜] κ·Έλž˜ν”„ 탐색을 μœ„ν•œ DFS와 BFS - 파이썬(Python)  (2) 2021.07.12
[자료ꡬ쑰] μŠ€νƒ(Stack)κ³Ό 큐(Queue) - 파이썬(Python)  (0) 2021.07.11
    'Algorithm/πŸ“š Concept' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ 글이닀
    • [자료ꡬ쑰] λ‹¨μˆœ/μ›ν˜•/이쀑 μ—°κ²°λ¦¬μŠ€νŠΈ(Linked List) κ΅¬ν˜„ - 파이썬(Python)
    • [μ•Œκ³ λ¦¬μ¦˜] 기쀀에 따라 μ •λ ¬(sort/sorted) - 파이썬(Python)
    • [μ•Œκ³ λ¦¬μ¦˜] λ²”μœ„λ₯Ό λ°˜μ”© μ’ν˜€κ°€λŠ” 이진 탐색 - 파이썬(Python)
    • [μ•Œκ³ λ¦¬μ¦˜] κ·Έλž˜ν”„ 탐색을 μœ„ν•œ DFS와 BFS - 파이썬(Python)
    J1Yun
    J1Yun
    개발 κ΄€λ ¨ 기술 및 곡뢀 λ‚΄μš© 기둝μž₯

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”