ํ(Queue)๋ž€?

๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • FIFO(First In First Out) : ์„ ์ž…์„ ์ถœ
  • push : ํ์— ์‚ฝ์ž…ํ•˜๋Š” ์—ฐ์‚ฐ / pop : ํ์—์„œ ๊บผ๋‚ด๋Š” ์—ฐ์‚ฐ

 

ํ์˜ ๋™์ž‘์›๋ฆฌ

์ดˆ๊ธฐ ๋น„์–ด์žˆ๋Š” ํ

 

๋น„์–ด์žˆ๋Š” ํ์— '2'์™€ '5'๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์‚ฝ์ž…

 

ํŒ์„ ํ•˜๋ฉด ๋จผ์ € ๋“ค์–ด๊ฐ€ ์žˆ๋˜ '2'๊ฐ€ ๋‚˜์˜ค๊ณ  ํ•œ ๋ฒˆ ๋” ์ง„ํ–‰ํ•˜๋ฉด '5'๋ฅผ ์ œ๊ฑฐ

 

ํ์˜ ํŠน์„ฑ์„ ํ™œ์šฉํ•˜๋Š” ๋ถ„์•ผ

์—ฌ๋Ÿฌ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…

  • ์ž‘์—… ๋Œ€๊ธฐ์—ด : ๋„คํŠธ์›Œํฌ ํ†ต์‹  ์‹œ ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์— ์ž‘์—…์„ ์š”์ฒญํ•˜๋ฉด ๋“ค์–ด์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ž‘์—… ์ฒ˜๋ฆฌ
  • ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ : ์–ด๋–ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ(ํ‚ค๋ณด๋“œ/๋งˆ์šฐ์Šค) ์ฒ˜๋ฆฌ

 

ํ์˜ ADT (Abstract Data Type)

  • ์Šคํƒ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ์Šคํƒ์˜ top → ํ์˜ front(์•ž) / rear(๋’ค)
    • ํ๋Š” ์•ž์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋นผ๊ณ  ๋’ค์—์„œ ๋„ฃ์œผ๋ฏ€๋กœ ์•ž๋’ค ์ตœ์ข…์œ„์น˜ ์ €์žฅ ํ•„์š”
๊ตฌ๋ถ„ ์ •์˜ ์„ค๋ช…
์—ฐ์‚ฐ boolean isFull() ํ์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ maxsize์ธ์ง€ ํ™•์ธํ•ด boolean๊ฐ’ ๋ฐ˜ํ™˜
(๊ฐ€๋“ ์ฐจ ์žˆ๋‹ค๋ฉด True / ์•„๋‹ˆ๋ฉด False)
boolean isEmpty() ํ์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š”์ง€ ํ™•์ธํ•ด boolean๊ฐ’ ๋ฐ˜ํ™˜
(๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด False / ์•„๋‹ˆ๋ฉด True)
void push(Item Tyoe item) ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œ
ItemType pop() ํ์—์„œ ์ฒ˜์Œ ํ‘ธ์‹œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒํ•˜๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
์ƒํƒœ Int front ํ์—์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ํŒํ•œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋ก
Int rear ํ์—์„œ ์ตœ๊ทผ์— ํ‘ธ์‹œํ•œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋ก
ItemType data[maxsize] ํ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฐ์—ด (์ตœ๋Œ€ maxsize๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ)

 

ํ์˜ ์„ธ๋ถ€๋™์ž‘

ํ์˜ ๊ธฐ๋ณธ๊ตฌ์กฐ
ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ (push)

 

ํ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๊ฒฝ์šฐ (pop)

 

๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์† ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ (push)

 

ํ ๊ตฌํ˜„ํ•˜๊ธฐ

1) ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹

  • push : append( )
  • pop : pop( )
    •  ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ pop(0) ์‚ฌ์šฉ
queue = []

# ํ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
queue.append(1)
queue.append(2)
queue.append(3)

# ํ์˜ ๋งจ ์•ž ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ
first_item = queue.pop(0)
print(first_item)

# ํ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
queue.append(4)
queue.append(5)

# ํ์˜ ๋งจ ์•ž ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ
first_item = queue.pop(0)
print(first_item)

 

2) ๋ฑ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹

  • DEQ(Double Ended Queue)
  • ์–‘ ๋์—์„œ ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ํ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ
from collections import deque

queue = deque()

# ํ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
queue.append(1)
queue.append(2)
queue.append(3)

# ํ์˜ ๋งจ ์•ž ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ
first_item = queue.popleft()
print(first_item)

# ํ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
queue.append(4)
queue.append(5)

# ํ์˜ ๋งจ ์•ž ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ
first_item = queue.popleft()
print(first_item)

โ€ป ์ฐธ๊ณ  ์ž๋ฃŒ โ€ป

https://wikidocs.net/221191

์Šคํƒ(Stack)์ด๋ž€?

๋จผ์ € ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์ผ ๋‚˜์ค‘์— ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • FILO(First In Last Out) : ๋จผ์ € ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด ๋งˆ์ง€๋ง‰์— ๋‚˜์˜ค๋Š” ๊ทœ์น™
  • push : ์Šคํƒ์— ์‚ฝ์ž…ํ•˜๋Š” ์—ฐ์‚ฐ / pop : ์Šคํƒ์—์„œ ๊บผ๋‚ด๋Š” ์—ฐ์‚ฐ

 

์Šคํƒ์˜ ๋™์ž‘์›๋ฆฌ

์ดˆ๊ธฐ ๋นˆ ์Šคํƒ์— ๋ฐ์ดํ„ฐ'1'๊ณผ ๋ฐ์ดํ„ฐ'2' push
popํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ'2' ์ œ๊ฑฐ
๋ฐ์ดํ„ฐ'3'์„ pushํ•˜๋ฉด ๋ฐ์ดํ„ฐ'1' ์œ„์— ์œ„์น˜
2๋ฒˆ ์—ฐ์†์œผ๋กœ pop์„ ํ•˜๋ฉด '3' → '1' ์ˆœ์„œ๋กœ ์ œ๊ฑฐ

 

์Šคํƒ์˜ ADT (Abstract Data Type)

์ถ”์ƒ ์ž๋ฃŒํ˜•์ด๋ผ๋Š” ๋œป์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์žˆ๊ณ  ์‹ค์ œ๋กœ ๊ตฌํ˜„์€ ๋˜์ง€์•Š์€ ์ž๋ฃŒํ˜•

๊ตฌ๋ถ„ ์ •์˜ ์„ค๋ช…
์—ฐ์‚ฐ boolean isFull() ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ maxsize์ธ์ง€ ํ™•์ธํ•ด boolean๊ฐ’ ๋ฐ˜ํ™˜
(๊ฐ€๋“ ์ฐจ ์žˆ๋‹ค๋ฉด True / ์•„๋‹ˆ๋ฉด False)
boolean isEmpty() ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š”์ง€ ํ™•์ธํ•ด boolean๊ฐ’ ๋ฐ˜ํ™˜
(๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด False / ์•„๋‹ˆ๋ฉด True)
void push(Item Tyoe item) ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œ
ItemType pop() ์Šคํƒ์—์„œ ์ตœ๊ทผ์— ํ‘ธ์‹œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒํ•˜๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
์ƒํƒœ Int top ์Šคํƒ์—์„œ ์ตœ๊ทผ์— ํ‘ธ์‹œํ•œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋ก
ItemType data[maxsize] ์Šคํƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฐ์—ด (์ตœ๋Œ€ maxsize๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ)

 

์Šคํƒ์˜ ์„ธ๋ถ€๋™์ž‘

์Šคํƒ์˜ ๊ธฐ๋ณธ๊ตฌ์กฐ
์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ (push)
์Šคํƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๊ฒฝ์šฐ (pop)

 

 

์Šคํƒ ๊ตฌํ˜„ํ•˜๊ธฐ

stack = []          # ์Šคํƒ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
max_size = 10       # ์Šคํƒ์˜ ์ตœ๋Œ€ํฌ๊ธฐ

# ์Šคํƒ์ด ๊ฐ€๋“์ฐผ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
def isFull(stack):
    return len(stack) == max_size

# ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
def isEmpty(stack):
    return len(stack) == 0

# ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
def push(stack, item):
    if isFull(stack):
        print("์Šคํƒ์ด ๊ฐ€๋“ ์ฐผ์Šต๋‹ˆ๋‹ค.")
    else:
        stack.append(item)
        print("๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")

# ์Šคํƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ํ•จ์ˆ˜
def pop(stack):
    if isEmpty(stack):
        print("์Šคํƒ์ด ๋น„์–ด์žˆ์Šต๋‹ˆ๋‹ค.")
        return None
    else:
        return stack.pop()

 

  • ํŒŒ์ด์ฌ์˜ ๋ฆฌ์ŠคํŠธ๋Š” ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์‹ค์ œ ์ฝ”๋“œ์—์„œ max_size, isFull(), isEmpty() ํ•จ์ˆ˜ ๊ตฌํ˜„ X
  • push(), pop() ํ•จ์ˆ˜๊ฐ€ ํ•˜๋Š” ์ผ์€ ๋ฆฌ์ŠคํŠธ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ๋ฟ์ด๋ฏ€๋กœ ๊ตณ์ด ๊ตฌํ˜„ X
  • ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์•„๋ž˜ ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ์–ด์„œ ์‚ฌ์šฉ
stack = []

# ์Šคํƒ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
stack.append(1)
stack.append(2)
stack.append(3)

# ์Šคํƒ์—์„œ ๋ฐ์ดํ„ฐ ๊บผ๋‚ด๊ธฐ
top_element = stack.pop()	# top_element = 3
next_element = stack.pop()	# next_element = 2

# ์Šคํƒ์˜ ํฌ๊ธฐ ๊ตฌํ•˜๊ธฐ
stack_size = len(stack)

 

→ ์Šคํƒ์˜ ๊ฐœ๋… ์ž์ฒด๋Š” ์–ด๋ ต์ง€ ์•Š์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์Šคํƒ์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ์—ฐ์Šต์ด ํ•„์š” !!


โ€ป ์ฐธ๊ณ  ์ž๋ฃŒ โ€ป

https://wikidocs.net/221191

๋ฐฐ์—ด

์ธ๋ฑ์Šค์™€ ๊ฐ’์„ ์ผ๋Œ€์ผ ๋Œ€์‘ํ•ด ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ณต๊ฐ„์€ ์ธ๋ฑ์Šค์™€ ์ผ๋Œ€์ผ ๋Œ€์‘
  • ์–ด๋–ค ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“  ํ•œ ๋ฒˆ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ → ์ž„์˜ ์ ‘๊ทผ (random access)

 

๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•

# 1. ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•
arr = [0,0,0,0,0,0]
arr = [0] * 6

# 2. ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
arr = list(range(6))			# [0,1,2,3,4,5]

# 3. ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
arr = [0 for _ in range(6)]		# [0,0,0,0,0,0]

 

โ€ป ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ๋ฐฐ์—ด ๋Œ€์‹  ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ โ€ป

๋ฐฐ์—ด์ด ์ปดํ“จํ„ฐ์— ์ €์žฅ๋œ ๋ชจ์Šต

 

๋ฐฐ์—ด๊ณผ ์ฐจ์›

  • ๋ฐฐ์—ด์€ 2์ฐจ์›, 3์ฐจ์›๊ณผ ๊ฐ™์ด ๋‹ค์ฐจ์› ๋ฐฐ์—ด๋กœ๋„ ์‚ฌ์šฉ
  • ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋Š” 1์ฐจ์›์ด๋ฏ€๋กœ ๋‹ค์ฐจ์› ๋ฐฐ์—ด๋„ 1์ฐจ์› ๊ณต๊ฐ„์— ์ €์žฅ
  • ๋ฐฐ์—ด์€ ์ฐจ์›๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์† ํ• ๋‹น

 

1์ฐจ์› ๋ฐฐ์—ด

  • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฐ์—ด ํ˜•ํƒœ
  • ๋ฐฐ์—ด์˜ ๋ชจ์Šต = ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ์‹ค์ œ ๋ฐฐ์—ด์˜ ๋ชจ์Šต

(์™ผ์ชฝ) ๋ฐฐ์—ด์˜ ๋ชจ์Šต (์˜ค๋ฅธ์ชฝ) ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ์‹ค์ œ ๋ฐฐ์—ด์˜ ๋ชจ์Šต

 

2์ฐจ์› ๋ฐฐ์—ด

  • 1์ฐจ์› ๋ฐฐ์—ด์„ ํ™•์žฅํ•œ ๊ฒƒ
# 2์ฐจ์› ๋ฐฐ์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„
arr = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

# ์ €์žฅ๋œ ๊ฐ’ ์ถœ๋ ฅ
print(arr[2][3])

# ์ €์žฅ๋œ ๊ฐ’์„ ๋ณ€๊ฒฝ
arr[2][3] = 15

# ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜์„ ํ™œ์šฉ
arr = [[i]*4 for i in range(3)]

(์™ผ์ชฝ) 2์ฐจ์› ๋ฐฐ์—ด์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ‘œํ˜„ (์˜ค๋ฅธ์ชฝ) ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ์‹ค์ œ ๋ฐฐ์—ด์˜ ๋ชจ์Šต

 

๋ฐฐ์—ด ์—ฐ์‚ฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ๋ฐฐ์—ด์€ ์ž„์˜ ์ ‘๊ทผ์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋‹จ ํ•œ ๋ฒˆ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)

 

๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ

(1) ๋งจ ๋’ค์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ

  • ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ„์น˜์— ์˜ํ–ฅ X
  • ์‹œ๊ฐ„๋ณต์žก๋„ = O(1)

(2) ๋งจ ์•ž์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ

  • ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋“ค์„ ๋’ค๋กœ ํ•œ ์นธ์”ฉ ๋ฏธ๋Š” ์—ฐ์‚ฐ ํ•„์š”
  • ์‹œ๊ฐ„๋ณต์žก๋„ = O(N)

(3) ์ค‘๊ฐ„์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ

  • ํ˜„์žฌ ์‚ฝ์ž…ํ•œ ๋ฐ์ดํ„ฐ ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋งŒํผ ๋ฏธ๋Š” ์—ฐ์‚ฐ ํ•„์š”
  • ์‹œ๊ฐ„๋ณต์žก๋„ = O(N)

 

๋ฐฐ์—ด์„ ์„ ํƒํ•  ๋•Œ ๊ณ ๋ คํ•  ์ 

  • ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ํ™•์ธ
    • ํ‘œํ˜„ํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ๋Ÿฐํƒ€์ž„์—์„œ ๋ฐฐ์—ด ํ• ๋‹น ์‹คํŒจ
    • ๋ณดํ†ต ์ •์ˆ˜ํ˜• 1์ฐจ์› ๋ฐฐ์—ด์€ 1000๋งŒ๊ฐœ, 2์ฐจ์› ๋ฐฐ์—ด์€ 3000*3000 ํฌ๊ธฐ๊ฐ€ ์ตœ๋Œ€
  • ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์ด ๋งŽ์€์ง€ ํ™•์ธ
    • ๋ฐฐ์—ด์€ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฏ€๋กœ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฝ์ž…ํ•˜๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐœ์ƒ

โ€ป ์ฐธ๊ณ  ์ž๋ฃŒ โ€ป

https://wikidocs.net/221191

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ด€๋ จ ๊ฐ•์˜์™€ ์ฑ…์„ ์ฐพ์•„๋ณด๋ฉด์„œ ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๊ณ  ๊ทธ ์ „์— ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. ("์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•ฉ๊ฒฉ์ž๋˜๊ธฐ ํŒŒ์ด์ฌํŽธ" ์ฐธ๊ณ )


์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ณต๋ถ€๋ฐฉ๋ฒ•

"์•„๋Š” ๊ฒƒ๊ณผ ๋ชจ๋ฅด๋Š” ๊ฒƒ์„ ์ •ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ธฐ"

 

1. ๊ธฐ๋ก

- ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ–ˆ๋Š”์ง€

- ๊ทผ๊ฑฐ๋Š” ๋ฌด์—‡์ธ์ง€

- ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋กœ ๋งŒ๋“œ๋ ค๊ณ  ํ–ˆ๋Š”์ง€

 

2. ์‹œํ—˜ ๋ณด๋“ฏ์ด ๊ณต๋ถ€

- ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ

- ๊ธด์žฅ๊ฐ์„ ์—ฐ์Šต

 

3. ์งง์€ ์‹œ๊ฐ„์œผ๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ†ต๊ณผ๋Š” ๋ถˆ๊ฐ€๋Šฅ

- ์ตœ์†Œ ํ•œ ๋‹ฌ์—์„œ ๋‘ ๋‹ฌ ์ •๋„ ์ง‘์ค‘ํ•ด์„œ ๊ณต๋ถ€

 

4. ๋‚˜๋งŒ์˜ ์–ธ์–ด๋กœ ์š”์•ฝ

- ์ดํ•ดํ•œ ๋’ค์— ์š”์•ฝ์€ ํ•„์ˆ˜

- ์ œ๋Œ€๋กœ ์ดํ•ดํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •

 

๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฒ•

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ = ๋ฌธ์ œ ํ’€์ด ๋Šฅ๋ ฅ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ

→ ๋ฌธ์ œ ๋ถ„์„์— ์‹œ๊ฐ„ ํˆฌ์ž ํ•„์š” (50%~60% ์ •๋„)

1. ๋ฌธ์ œ๋ฅผ ์ชผ๊ฐœ์„œ ๋ถ„์„


2. ์ œ์•ฝ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€
- ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ• ์ง€ ๊ณ ๋ฏผํ•  ๋•Œ ์œ ์šฉ
- ์ถ”ํ›„ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ์˜ˆ์™ธ๋ฅผ ๊ฑฐ๋ฅด๊ธฐ ํŽธ๋ฆฌ


3. ์ž…๋ ฅ๊ฐ’์„ ๋ถ„์„
- ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ž…๋ ฅ๊ฐ’์ด ๊ฒฐ์ •
- ์ž…๋ ฅ๊ฐ’์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ œํ•œ์‹œ๊ฐ„ ๋‚ด์— ํ’€ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ


4. ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ํŒŒ์•…


5. ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด๋‚˜ ๊ตฌ์„ฑ ํŒŒ์•…

 

์˜์‚ฌ์ฝ”๋“œ๋กœ ์„ค๊ณ„ํ•˜๋Š” ์—ฐ์Šต

์˜์‚ฌ์ฝ”๋“œ๋ž€?

ํ”„๋กœ๊ทธ๋žจ์˜ ๋…ผ๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ ์ผ์ข…์˜ ์ง€์นจ

์˜์‚ฌ์ฝ”๋“œ์˜ ์›์น™
1. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
2. ์ผ๋ฐ˜์ธ๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ž์—ฐ์–ด๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
3. ์ผ์ •ํ•œ ํ˜•์‹์ด ์—†๋‹ค. (์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑ)

์˜์‚ฌ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
1. ์„ธ๋ถ€ ๊ตฌํ˜„์ด ์•„๋‹Œ ๋™์ž‘ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑ
2. ๋ฌธ์ œ ํ•ด๊ฒฐ ์ˆœ์„œ๋กœ ์ž‘์„ฑ
3. ์ถฉ๋ถ„ํžˆ ํ…Œ์ŠคํŠธ


โ€ป ์ฐธ๊ณ  ์ž๋ฃŒ โ€ป

https://wikidocs.net/221191

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.2๋ฅผ ํ’€๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋‚œ์ด๋„๊ฐ€ ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์ ธ ๋‹นํ™ฉ์Šค๋Ÿฌ์› ๋‹ค. ์นœ๊ตฌ๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ถ€ํ„ฐ ํ•ด์•ผํ•œ๋‹ค๋ฉด์„œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€๋ฒ• ๊ด€๋ จ ์ž๋ฃŒ๋ฅผ ๋ณด๋‚ด์ค˜์„œ ๋‚˜๋ฆ„๋Œ€๋กœ ์ •๋ฆฌํ•ด์„œ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ํ•ด์•ผํ•  ๊ฒƒ์ด ๋„ˆ๋ฌด ๋งŽ์€๋ฐ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ณ  ์žˆ๋Š” ๋‚˜...๋„ˆ๋ฌด ๋Œ€๋‹จํ•˜๋‹ค...!!


1๋‹จ๊ณ„. ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ๋ฐ ์ž๋ฃŒ๊ตฌ์กฐ

์–ด๋–ค ์–ธ์–ด๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๋ณผ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•๊ณผ ์ž๋ฃŒ๊ตฌ์กฐ ๊ณต๋ถ€

 

1) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์„ ํƒ

ํŽธํ•˜๊ณ  ์ต์ˆ™ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์„ ํƒํ•˜๊ณ  ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ๊ณต๋ถ€

 

2) ์ž๋ฃŒ๊ตฌ์กฐ ๊ณต๋ถ€

  • ๊ณต๋ถ€ ์ˆœ์„œ
    • ๋ฐฐ์—ด (Array)
    • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Linked List)
    • ์Šคํƒ (Stack)
    • ํ (Queue)
    • ํ•ด์‹œ ํ…Œ์ด๋ธ” (Hash Table)
    • ํŠธ๋ฆฌ (Tree)
    • ํž™ (Heap)
    • ๊ทธ๋ž˜ํ”„ (Graph)
  • ๊ณต๋ถ€ ๋ฐฉ๋ฒ•
    • ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋ชฉ์ ๊ณผ ์ด๋ก  ์ดํ•ด (์ฑ…์ด๋‚˜ ๊ฐ•์˜ ํ™œ์šฉ)
    • ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ตฌํ˜„ ๋กœ์ง ๋”ฐ๋ผํ•˜๋ฉฐ ๋‚ด๋ถ€ ์ž‘๋™์›๋ฆฌ ํŒŒ์•… (๊ตฌ๊ธ€ ๊ฒ€์ƒ‰)
    • ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ฌธ์ œ ํ•ด๊ฒฐ (์ฝ”๋”ฉ ์—ฐ์Šต ์‚ฌ์ดํŠธ ์ด์šฉ)

 

2๋‹จ๊ณ„. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก 

๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

 

1) ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋… ๊ณต๋ถ€

  • ์ด์ง„ ํƒ์ƒ‰ (Binary Search)
  • ์ •๋ ฌ (Sorting)
  • ์™„์ „ ํƒ์ƒ‰ (Exhaustive Search)
  • ์žฌ๊ท€ (Recursion)
  • ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (DFS)
  • ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ (BFS)
  • ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ (DP, Dynamic Programming)
  • ๋ฐฑ ํŠธ๋ž˜ํ‚น (Backtracking)

2) ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ• (big-O notation) ๋งˆ์Šคํ„ฐ

  • ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์˜ ํšจ์œจ์„ฑ์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ ์ฒ™๋„
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ

 

3๋‹จ๊ณ„. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด

๊ธฐ๋ณธ์ ์ธ ์ด๋ก ์„ ๊ณต๋ถ€ํ•˜๊ณ  ๋ฌธ์ œ ํ’€์ด

 

1) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ถœ๋ฌธ์ œ ํ”Œ๋žซํผ

2) ๋ฌธ์ œํ’€์ด ํŒ

  • ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋ถ€ํ„ฐ ์‹œ์ž‘
  • ์‹œ๊ฐ„์„ ์ •ํ•ด๋†“๊ณ  ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๋ชปํ’€์—ˆ์„ ๊ฒฝ์šฐ ์ •๋‹ต ํ™•์ธ
  • ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์‹œ๊ฐ„ ๋ฐ ๊ณต๊ฐ„๋ณต์žก๋„ ๋ถ„์„
  • ํ’€๊ณ  ๋‚œ ํ›„์—๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด ์ฐธ๊ณ 

โ€ป Reference โ€ป

์ฝ”๋”ฉํ…Œ์ŠคํŠธ 4๋‹จ๊ณ„ ๊ณต๋ถ€๋ฒ• ๐ŸŒŸ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„(์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€) ์ปค๋ฆฌํ˜๋Ÿผ ๐ŸŒŸ

→ ๊ธฐ๋ณธ์ ์ธ ๋‹จ๊ณ„ ์„ค์ •์— ๋„์›€์ด ๋งŽ์ด ๋œ ๋ธ”๋กœ๊ทธ

 

์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•œ 5๊ฐ€์ง€ ๋‹จ๊ณ„

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„๋ฅผ ์œ„ํ•œ ๋ฐฑ์ค€ ๋ฌธ์ œ ์ถ”์ฒœ

 

 

+ Recent posts