1 λΆ„ μ†Œμš”

μŠ€νƒκ³Ό 큐

μŠ€νƒ κ³Ό 큐 λŠ” λ¦¬μŠ€νŠΈμ—μ„œ 쑰금 더 λ°œμ „ν•œ ν˜•νƒœμ˜ μžλ£Œκ΅¬μ‘°μž„.

μŠ€νƒκ³Ό νλŠ” κ΅¬μ‘°λŠ” λΉ„μŠ·ν•˜μ§€λ§Œ, 처리 λ°©μ‹μ—μ„œ 차이λ₯Ό 보인닀.

μŠ€νƒ

μŠ€νƒ(stack) 은 μ‚½μž…κ³Ό μ‚­μ œ 연산이 ν›„μž…μ„ μΆœ(LIFO) 둜 μ΄λ€„μ§€λŠ” μžλ£Œκ΅¬μ‘°μž„.

ν›„μž… μ„ μΆœμ€ μ‚½μž…κ³Ό μ‚­μ œκ°€ ν•œ μͺ½μ—μ„œλ§Œ μΌμ–΄λ‚œλ‹€λŠ” νŠΉμ§•μ΄ μžˆλ‹€.

컡을 μƒκ°ν•˜λ©΄ 쒋을듯!

νŒŒμ΄μ¬μ—μ„œλŠ” 리슀트λ₯Ό μ΄μš©ν•΄ μŠ€νƒμ„ μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€!

파이썬의 μŠ€νƒ

  • top: μ‚½μž…κ³Ό μ‚­μ œκ°€ μΌμ–΄λ‚˜λŠ” μœ„μΉ˜λ₯Ό λœ»ν•¨.
  • s.append(): top μœ„μΉ˜μ— μƒˆλ‘œμš΄ 데이터λ₯Ό μ‚½μž…ν•˜λŠ” μ—°μ‚°
  • s.pop(): top μœ„μΉ˜μ— ν˜„μž¬ μžˆλŠ” 데이터λ₯Ό μ‚­μ œν•˜κ³  ν™•μΈν•˜λŠ” μ—°μ‚°
  • s[-1]: top μœ„μΉ˜μ— ν˜„μž¬ μžˆλŠ” 데이터λ₯Ό λ‹¨μˆœ ν™•μΈν•˜λŠ” μ—°μ‚°

μŠ€νƒμ€ DFS, λ°±νŠΈλž˜ν‚Ή λ¬Έμ œμ—μ„œ νš¨κ³Όμ μ΄λ―€λ‘œ λ°˜λ“œμ‹œ μ΄ν•΄ν•˜κ³  λ„˜μ–΄κ°€μž!

큐

큐(queue) λŠ” μ‚½μž…κ³Ό μ‚­μ œ 연산이 μ„ μž…μ„ μΆœ(FIFO) 둜 μ΄λ€„μ§€λŠ” μžλ£Œκ΅¬μ‘°μž„.

μŠ€νƒκ³Ό λ‹€λ₯΄κ²Œ λ¨Όμ € λ“€μ–΄μ˜¨ 데이터가 λ¨Όμ € λ‚˜κ°„λ‹€!

κ·Έλž˜μ„œ μ‚½μž…κ³Ό μ‚­μ œκ°€ μ–‘λ°©ν–₯μ—μ„œ μ΄λ€„μ§„λ‹€λŠ” νŠΉμ§•μ΄ μžˆλ‹€.

νŒŒμ΄ν”„λ₯Ό μƒκ°ν•˜λ©΄ 쒋을듯!

파이썬의 큐

  • rear: νμ—μ„œ κ°€μž₯ 끝 데이터λ₯Ό κ°€λ¦¬ν‚€λŠ” μ˜μ—­
  • front: νμ—μ„œ κ°€μž₯ μ•žμ˜ 데이터λ₯Ό κ°€λ¦¬ν‚€λŠ” μ˜μ—­
  • s.append(data): rear 뢀뢄에 μƒˆλ‘œμš΄ 데이터λ₯Ό μ‚½μž…ν•˜λŠ” μ—°μ‚°
  • s.popleft(): front 뢀뢄에 μžˆλŠ” 데이터λ₯Ό μ‚­μ œν•˜κ³  ν™•μΈν•˜λŠ” μ—°μ‚°
  • s[0]: 큐의 맨 μ•ž(front)에 μžˆλŠ” 데이터λ₯Ό 확인할 λ•Œ μ‚¬μš©ν•˜λŠ” μ—°μ‚°

νλŠ” BFSμ—μ„œ 자주 μ‚¬μš©ν•œλ‹€!

μš°μ„ μˆœμœ„ 큐?

μš°μ„ μˆœμœ„ 큐(priority queue) λŠ” 값이 λ“€μ–΄κ°„ μˆœμ„œμ™€ 상관 없이 μš°μ„ μˆœμœ„κ°€ 높은 데이터가 λ¨Όμ € λ‚˜μ˜€λŠ” μžλ£Œκ΅¬μ‘°μž„.

큐 섀정에 따라 front에 항상 μ΅œλŒ“κ°’ λ˜λŠ” μ΅œμ†Ÿκ°’μ΄ μœ„μΉ˜ν•œλ‹€.

일반적으둜 νž™(heap) 을 μ΄μš©ν•΄ κ΅¬ν˜„ν•˜λŠ”λ°, νž™μ€ 트리 μ’…λ₯˜ 쀑 ν•˜λ‚˜μž„!

κ΄€λ ¨ 문제

| ⭐️ λ¬Έμ œλŠ” κ΅¬κΈ€λ§ν•΄μ„œ λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ μ½”λ“œλ₯Ό 보고 ν‘Ό μ½”λ“œ ν˜Ήμ€ μ œλŒ€λ‘œ μ΄ν•΄ν•˜μ§€ λͺ»ν•΄ 풀지 λͺ»ν•œ λ¬Έμ œλ“€

μŠ€νƒ μˆ˜μ—΄

였큰 수 ⭐️

μΉ΄λ“œ 2

  • 였큰 수 λ¬Έμ œλŠ” λ‹€μ‹œ ν’€μ–΄λ³΄μž

νƒœκ·Έ:

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ:

λŒ“κΈ€λ‚¨κΈ°κΈ°