• ABOUT
  • PORTFOLIO
  • POSTS
  • GUESTBOOK

Β© 2025 BlueCool12 All rights reserved.

2025.08.06자료ꡬ쑰

🧱 μŠ€νƒ(Stack)κ³Ό 큐(Queue) κΈ°λ³Έ κ°œλ…κ³Ό ν™œμš© μ˜ˆμ‹œ

1. μŠ€νƒ(Stack)μ΄λž€? 

AI Generated ImageμŠ€νƒμ€ "μŒ“λŠ”λ‹€"λŠ” κ°œλ…κ³Ό κ°€μž₯ 잘 μ–΄μšΈλ¦¬λŠ” μžλ£Œκ΅¬μ‘°λ‹€. 데이터λ₯Ό 차곑차곑 μŒ“μ•„ μ˜¬λ¦¬λŠ” ν˜•νƒœλ‘œ μ €μž₯ν•˜λ©° κ°€μž₯ λ§ˆμ§€λ§‰μ— λ“€μ–΄κ°„ 데이터가 κ°€μž₯ λ¨Όμ € μ œκ±°λ˜λŠ” ν›„μž…μ„ μΆœ(LIFO, Last-In-First-Out) λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.


μ£Όμš” μ—°μ‚°

μŠ€νƒμ€ ꡬ쑰적으둜 ν•œμͺ½ 끝(Top)μ—μ„œλ§Œ λ°μ΄ν„°μ˜ μ ‘κ·Ό, μ‚½μž…, μ‚­μ œκ°€ 이루어진닀.

  • push(item): μŠ€νƒμ˜ 맨 μœ„μ— μƒˆλ‘œμš΄ 데이터λ₯Ό μΆ”κ°€ν•œλ‹€.
  • pop(): μŠ€νƒμ˜ 맨 μœ„μ— μžˆλŠ” 데이터λ₯Ό μ œκ±°ν•˜κ³  κ·Έ 값을 λ°˜ν™˜ν•œλ‹€.
  • peek() λ˜λŠ” top(): μŠ€νƒμ˜ 맨 μœ„μ— μžˆλŠ” 데이터λ₯Ό μ œκ±°ν•˜μ§€ μ•Šκ³  μ–΄λ–€ 값인지 ν™•μΈλ§Œ ν•œλ‹€.
  • isEmpty(): μŠ€νƒμ— 데이터가 μ‘΄μž¬ν•˜μ§€ μ•Šκ³  λΉ„μ–΄μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό 논리값(boolean)으둜 λ°˜ν™˜ν•œλ‹€.


μ‹œκ°„ λ³΅μž‘λ„

μ‚½μž… 및 μ‚­μ œ (push, pop)
μŠ€νƒμ€ 항상 μ΅œμƒλ‹¨μ—μ„œλ§Œ 데이터λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•˜λ―€λ‘œ λ°μ΄ν„°μ˜ κ°œμˆ˜μ™€ 상관없이 O(1)의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€.

탐색
νŠΉμ • μš”μ†Œλ₯Ό 찾으렀면 μ΅œμƒλ‹¨λΆ€ν„° 순차적으둜 데이터λ₯Ό 확인해야 ν•œλ‹€. λ”°λΌμ„œ μ΅œμ•…μ˜ 경우 λͺ¨λ“  데이터λ₯Ό 확인해야 ν•˜λ―€λ‘œ O(n)의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€.


μ£Όμš” ν™œμš© 사둀

μŠ€νƒμ€ λ°μ΄ν„°μ˜ μž‘μ—… μˆœμ„œλ₯Ό μΆ”μ ν•˜κ³  κ°€μž₯ 졜근의 μƒνƒœλ‘œ λ˜λŒμ•„κ°€μ•Ό ν•˜λŠ” κΈ°λŠ₯에 주둜 μ‚¬μš©λœλ‹€.

μ‹€ν–‰ μ·¨μ†Œ (Undo)
λ¬Έμ„œ νŽΈμ§‘κΈ° λ“±μ—μ„œ μ‚¬μš©μžκ°€ κ°€μž₯ μ΅œκ·Όμ— μ‹€ν–‰ν•œ μž‘μ—…λΆ€ν„° 순차적으둜 μ·¨μ†Œν•œλ‹€.

μ›Ή λΈŒλΌμš°μ € λ°©λ¬Έ 기둝
λ’€λ‘œ κ°€κΈ° κΈ°λŠ₯ μž‘λ™ μ‹œ κ°€μž₯ λ§ˆμ§€λ§‰μ— λ°©λ¬Έν•œ νŽ˜μ΄μ§€λΆ€ν„° μˆœμ„œλŒ€λ‘œ λ‘œλ“œν•œλ‹€.

ν•¨μˆ˜μ˜ 콜 μŠ€νƒ (Call Stack)
ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 ν•¨μˆ˜κ°€ 호좜될 λ•Œ ν•΄λ‹Ή ν•¨μˆ˜μ˜ μ§€μ—­ λ³€μˆ˜μ™€ 볡귀 μ£Όμ†Œ 등을 μ €μž₯ν•˜κ³  ν•¨μˆ˜ μ’…λ£Œ μ‹œ 이전 μ‹€ν–‰ μœ„μΉ˜λ‘œ λŒμ•„κ°€λŠ” 데 μ‚¬μš©λœλ‹€.

μˆ˜μ‹ 및 κ΄„ν˜Έ 검사
ν”„λ‘œκ·Έλž˜λ° μ½”λ“œλ‚˜ μˆ˜μ‹μ—μ„œ μ—΄λ¦° κ΄„ν˜Έμ™€ λ‹«νžŒ κ΄„ν˜Έμ˜ 짝이 μ˜¬λ°”λ₯΄κ²Œ λ§žλŠ”μ§€ 검증할 λ•Œ μ‚¬μš©λœλ‹€.

DFS (Depth-First Search, 깊이 μš°μ„  탐색)
κ·Έλž˜ν”„ 탐색 κ³Όμ •μ—μ„œ 깊이λ₯Ό μš°μ„ μ μœΌλ‘œ 탐색할 λ•Œ μŠ€νƒ ꡬ쑰가 ν™œμš©λ  수 μžˆλ‹€.


[μ—°μŠ΅ 문제 링크]
1. μŠ€νƒ
2. κ΄„ν˜Έ
3. μ‡ λ§‰λŒ€κΈ°
4. 탑

 

2. 큐(Queue)λž€?

AI Generated ImageνλŠ” 데이터λ₯Ό μˆœμ„œλŒ€λ‘œ μ €μž₯ν•˜λ©° κ°€μž₯ λ¨Όμ € λ“€μ–΄κ°„ 데이터가 κ°€μž₯ λ¨Όμ € μ œκ±°λ˜λŠ” μ„ μž…μ„ μΆœ(FIFO, First-In-First-Out) λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.

즉 λ¨Όμ € λ“€μ–΄μ˜¨ 데이터가 λ¨Όμ € λ‚˜κ°€λ©° 마치 λ§€ν‘œμ†Œμ—μ„œ 쀄을 μ„  μ‚¬λžŒμ΄ λ¨Όμ € ν‘œλ₯Ό κ΅¬λ§€ν•˜κ³  λ‚˜κ°€λŠ” ꡬ쑰와 κ°™λ‹€.


μ£Όμš” μ—°μ‚°

νλŠ” ꡬ쑰적으둜 ν•œμͺ½ 끝(Rear)μ—μ„œλŠ” λ°μ΄ν„°μ˜ μ‚½μž…, λ°˜λŒ€μͺ½ 끝(Front)μ—μ„œλŠ” λ°μ΄ν„°μ˜ μ‚­μ œκ°€ 이루어진닀.

  • enqueue(item): 큐의 맨 뒀에 μƒˆλ‘œμš΄ 데이터λ₯Ό μΆ”κ°€ν•œλ‹€.
  • dequeue(): 큐의 맨 μ•žμ— μžˆλŠ” 데이터λ₯Ό μ œκ±°ν•˜κ³  κ·Έ 값을 λ°˜ν™˜ν•œλ‹€.
  • peek() λ˜λŠ” front(): 큐의 맨 μ•žμ— μžˆλŠ” 데이터λ₯Ό μ œκ±°ν•˜μ§€ μ•Šκ³  μ–΄λ–€ 값인지 ν™•μΈλ§Œ ν•œλ‹€.
  • isEmpty(): 큐에 데이터가 μ‘΄μž¬ν•˜μ§€ μ•Šκ³  λΉ„μ–΄μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό 논리값(boolean)으둜 λ°˜ν™˜ν•œλ‹€.


μ‹œκ°„ λ³΅μž‘λ„

μ‚½μž… 및 μ‚­μ œ (enqueue, dequeue)
μœ„μΉ˜λ₯Ό μ°ΎλŠ” κ³Όμ • 없이 큐의 μ–‘ λλ‹¨μ—μ„œ λ°”λ‘œ 연산이 μˆ˜ν–‰λ˜λ―€λ‘œ λ°μ΄ν„°μ˜ κ°œμˆ˜μ™€ λ¬΄κ΄€ν•˜κ²Œ O(1)의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€.

탐색
νŠΉμ • μš”μ†Œλ₯Ό μ°ΎκΈ° μœ„ν•΄μ„œλŠ” 맨 μ•žλΆ€ν„° 순차적으둜 데이터λ₯Ό 확인해야 ν•˜λ―€λ‘œ μ΅œμ•…μ˜ 경우 O(n)의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€.


μ£Όμš” ν™œμš© 사둀

νλŠ” 주둜 데이터가 μž…λ ₯된 μˆœμ„œλŒ€λ‘œ 순차적인 μ²˜λ¦¬κ°€ ν•„μš”ν•œ 상황에 μ‚¬μš©λœλ‹€.

운영체제의 μž‘μ—… μŠ€μΌ€μ€„λ§
CPUλ₯Ό ν• λ‹Ήλ°›κΈ° μœ„ν•΄ λŒ€κΈ°ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ“€μ΄λ‚˜ λ””μŠ€ν¬ μŠ€μΌ€μ€„λ§ 등을 μˆœμ„œλŒ€λ‘œ κ΄€λ¦¬ν•œλ‹€.

ν”„λ¦°ν„° 인쇄 λŒ€κΈ°μ—΄ (Spooling)
μ—¬λŸ¬ 인쇄 μš”μ²­μ΄ 듀어왔을 λ•Œ λ¨Όμ € μš”μ²­λœ λ¬Έμ„œλΆ€ν„° 순차적으둜 좜λ ₯ν•œλ‹€.

λ©”μ‹œμ§€ 큐 (Message Queue)
μ‹œμŠ€ν…œ κ°„ 비동기적인 데이터 κ΅ν™˜ ν™˜κ²½μ—μ„œ νŠΈλž˜ν”½μ„ μ œμ–΄ν•˜κ³  데이터λ₯Ό 순차적으둜 μ „λ‹¬ν•˜κΈ° μœ„ν•œ 버퍼 역할을 ν•œλ‹€.

λ„ˆλΉ„ μš°μ„  탐색 (BFS, Breadth-First Search)
κ·Έλž˜ν”„ 탐색 μ•Œκ³ λ¦¬μ¦˜μ—μ„œ μ‹œμž‘ μ •μ μœΌλ‘œλΆ€ν„° κ°€κΉŒμš΄ 정점뢀터 μˆœμ„œλŒ€λ‘œ λ°©λ¬Έν•˜κΈ° μœ„ν•΄ 큐λ₯Ό ν™œμš©ν•œλ‹€.


[μ—°μŠ΅ 문제 링크]
1. 큐
2. μš”μ„Έν‘ΈμŠ€ 문제
3. μΉ΄λ“œ1
4. ν”„λ¦°ν„° 큐

이전 κΈ€
πŸ“„ Pageable둜 νŽ˜μ΄μ§• 처리 μ‰½κ²Œ κ΅¬ν˜„ν•˜κΈ° (+Spring Data JPA)
λ‹€μŒ κΈ€
πŸ”‘ SSH & SFTP 기초 κ°€μ΄λ“œ - μ„œλ²„ 접속과 파일 전솑
μž₯μ‹μš© 둜κ³