๐Ÿค[์•Œ๊ณ ๋ฆฌ์ฆ˜] SW Expert ํŒŒ์ด์ฌ SW๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ - Stack1 ๊ฐ•์˜

Stack ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ฐœ๋…

Stack์˜ ํŠน์„ฑ

Stack
ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ค‘์š”์„ฑ๊ณผ ํ™œ์šฉ๋„๊ฐ€ ๋งค์šฐ ๋†’์€ ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋ฌผ๊ฑด์„ ์Œ“์•„ ์˜ฌ๋ฆฌ๋“ฏ ์ž๋ฃŒ๋ฅผ ์Œ“์•„ ์˜ฌ๋ฆฐ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ
  • ์Šคํƒ์— ์ €์žฅ๋œ ์ž๋ฃŒ๋Š” ์„ ํ˜•๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง
    • ์„ ํ˜•๊ตฌ์กฐ: ์ž๋ฃŒ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ 1๋Œ€1์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง
    • ๋น„์„ ํ˜•๊ตฌ์กฐ: ์ž๋ฃŒ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ 1๋Œ€N์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง(ex: ํŠธ๋ฆฌ)
  • ์Šคํƒ์— ์ž๋ฃŒ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์Šคํƒ์—์„œ ์ž๋ฃŒ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ์Œ
  • ๋งˆ์ง€๋ง‰์— ์‚ฝ์ž…ํ•œ ์ž๋ฃŒ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ๊บผ๋ƒ„
    = ํ›„์ž…์„ ์ถœ(LIFO=Last-In-First-Out)
    ex) ์Šคํƒ์— 1,2,3์ˆœ์œผ๋กœ ์ž๋ฃŒ๋ฅผ ์‚ฝ์ž…ํ•œ ํ›„ ๊บผ๋‚ด๋ฉด 3,2,1์ˆœ์œผ๋กœ(์—ญ์ˆœ) ๊บผ๋‚ผ ์ˆ˜ ์žˆ์Œ

Stack์˜ ๊ตฌํ˜„

์Šคํƒ์„ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋‚ด์šฉ

1. ์ž๋ฃŒ๊ตฌ์กฐ
-> ์ž๋ฃŒ๋ฅผ ์„ ํ˜•์œผ๋กœ ์ €์žฅํ•  ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•จ

  • C์–ธ์–ด์—์„œ๋Š” ๋ฐฐ์—ด ์‚ฌ์šฉ๊ฐ€๋Šฅ
  • ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ ์‚ฌ์šฉ๊ฐ€๋Šฅ
    ์ด๋•Œ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„๋œ ์ €์žฅ์†Œ ์ž์ฒด๋ฅผ ์ข์€์˜๋ฏธ๋กœ ์Šคํƒ์ด๋ผ ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.
  • ์Šคํƒ์—์„œ ๋งˆ์ง€๋ง‰ ์‚ฝ์ž…๋œ ์›์†Œ์˜ ์œ„์น˜๋ฅผ top์ด๋ผ ๋ถ€๋ฅธ๋‹ค.

์Šคํƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ฐ์‚ฐ์ด ํ•„์š”ํ•จ


2. ์—ฐ์‚ฐ

  • ์‚ฝ์ž…
    : ์ €์žฅ์†Œ์— ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ณดํ†ต push๋ผ ๋ถ€๋ฅธ๋‹ค.

  • ์‚ญ์ œ
    : ์ €์žฅ์†Œ์—์„œ ์ž๋ฃŒ๋ฅผ ๊บผ๋ƒ„. ๊บผ๋‚ธ ์ž๋ฃŒ๋Š” ์‚ฝ์ž…ํ•œ ์ž๋ฃŒ์˜ ์—ญ์ˆœ์œผ๋กœ ๊บผ๋‚ด๋ฉฐ ๋ณดํ†ต pop์ด๋ผ ๋ถ€๋ฅธ๋‹ค.

  • isEmpty
    : ์Šคํƒ์ด ๊ณต๋ฐฑ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ

  • peek
    : ์Šคํƒ์˜ top์— ์žˆ๋Š” item(์›์†Œ)์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ


Stack์˜ ์—ฐ์‚ฐ

์Šคํƒ์˜ ์‚ฝ์ž…/์‚ญ์ œ ์—ฐ์‚ฐ ๊ณผ์ •

ex) ๋นˆ ์Šคํƒ์— ์›์†Œ A,B,C๋ฅผ ์ฐจ๋ก€๋กœ ์‚ฝ์ž… ํ›„ ํ•œ ๋ฒˆ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ๊ณผ์ •
์ตœ์ดˆ์˜ ์Šคํƒ์€ ์ž๋ฃŒ๊ฐ€ ์—†๋Š” ๊ณต๋ฐฑ์ƒํƒœ.
์ด๋•Œ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” top์€ ์ž๋ฃŒ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— -1์˜ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.

push ์•Œ๊ณ ๋ฆฌ์ฆ˜

def push(item): #์‚ฝ์ž…ํ•  ์ž๋ฃŒ item์„ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›์Œ
	s.append(item) #top์„ ํ•˜๋‚˜ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์Šคํƒ s์— top์œ„์น˜์˜ ์ž๋ฃŒ item์„ ์ €์žฅ

ํŒŒ์ด์ฌ์—์„œ๋Š” ์Šคํƒ์„ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„.
ํŒŒ์ด์ฌ์˜ ๋ฆฌ์ŠคํŠธ๋Š” ํฌ๊ธฐ ์ œํ•œ ์—†์ด ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์„ ์ž์œ ๋กญ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ.
๊ทธ๋ž˜์„œ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„์‹œ์—๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

๋˜ํ•œ ๋ฆฌ์ŠคํŠธ์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์‹œ ์‚ฝ์ž…ํ•  ๋งˆ์ง€๋ง‰ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•  top ๋ณ€์ˆ˜๋„ ํ•„์š”์—†๋‹ค. append() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰์— data๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

pop ์•Œ๊ณ ๋ฆฌ์ฆ˜

def pop():
	 if len(s)==0: #์Šคํƒ์— ์ž๋ฃŒ๊ฐ€ ์—†๋Š” ์ƒํƒœ
     	#underflow์ฒ˜๋ฆฌ
        return
     else:
     	return s.pop(-1) #์Šคํƒ์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’ ๋ฐ˜ํ™˜.

top์ด -1์ธ ๊ฒฝ์šฐ, -1์€ top์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์˜๋ฏธํ•˜๋ฉฐ ์ด๋Š” ์Šคํƒ์— ์ž๋ฃŒ๊ฐ€ ์—†๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธ.
์ด ๊ฒฝ์šฐ underflow์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์Šคํƒ s์—์„œ top์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  top์€ ํ•˜๋‚˜ ๊ฐ์†Œ.

ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๋ฅผ lenํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ top๋ณ€์ˆ˜ ์‚ฌ์šฉํ•  ํ•„์š” ์—†๋‹ค.
๋ฆฌ์ŠคํŠธ์—์„œ๋Š” pop()๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์›ํ•˜๋Š” ์ธ๋ฑ์Šค ์œ„์น˜์˜ ๊ฐ’์„ ์‚ญ์ œํ•˜๊ณ  ๋ฐ˜ํ™˜๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ธ์ž๊ฐ’์œผ๋กœ -1์„ ์ž…๋ ฅํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์œ„์น˜์˜ ๊ฐ’์„ ์‚ญ์ œํ•˜๊ณ  ๋ฐ˜ํ™˜๋ฐ›๋Š”๊ฒƒ.
pop๊ตฌํ˜„์‹œ์—๋„ top๋ณ€์ˆ˜๊ฐ€ ํ•„์š”์—†๋‹ค.

stack ๊ตฌํ˜„

  1. ์Šคํƒ ๊ตฌํ˜„
  2. ๊ตฌํ˜„ํ•œ ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ 3๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์Šคํƒ์— ์ €์žฅํ•˜๊ณ  ๋‹ค์‹œ 3๋ฒˆ ๊บผ๋‚ด์„œ ์ถœ๋ ฅํ•˜๊ธฐ
def push(item):
	s.append(item)
def pop():
	if len(s)==0:
    	print("Stack is Empty!!") #underflow
        return
    else:
    	return s.pop(-1)
s=[]
push(1)
push(2)
push(3)

print('pop item =>', pop())
print('pop item =>', pop())
print('pop item =>', pop())

์Šคํƒ ๊ตฌํ˜„ ๊ณ ๋ ค์‚ฌํ•ญ

  • ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ
    • ์žฅ์  : ๊ตฌํ˜„์ด ์šฉ์ด
    • ๋‹จ์  : ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํฐ overhead ๋ฐœ์ƒ ์ž‘์—…์œผ๋กœ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”

-> ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
1. ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€๋™๋˜์ง€ ์•Š๋„๋ก ๋ฐฐ์—ด์ฒ˜๋Ÿผ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
2. ๋™์  ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ €์žฅ์†Œ๋ฅผ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜์—ฌ ์Šคํƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์žฅ์  : ๊ตฌํ˜„์ด ์šฉ์ด. ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์ด ๋งŽ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์  : ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋Š”๊ฒƒ๋ณด๋‹ค ๊ตฌํ˜„์ด ๋ณต์žกํ•จ

Stack์˜ ์‘์šฉ

๊ด„ํ˜ธ๊ฒ€์‚ฌ

๊ด„ํ˜ธ์˜ ์ข…๋ฅ˜

  • ๋Œ€๊ด„ํ˜ธ []
  • ์ค‘๊ด„ํ˜ธ {}
  • ์†Œ๊ด„ํ˜ธ ()

๋ฌธ์žฅ์—์„œ ๊ด„ํ˜ธ๋ฅผ ์˜ฌ๋ฐ”๋กœ ์‚ฌ์šฉํ–ˆ๋Š”์ง€๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ์กฐ๊ฑด

  1. ์™ผ์ชฝ ๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜์™€ ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์•„์•ผํ•จ
  2. ๊ฐ™์€ ๊ด„ํ˜ธ์—์„œ ์™ผ์ชฝ ๊ด„ํ˜ธ๋Š” ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ๋ณด๋‹ค ๋จผ์ € ๋‚˜์™€์•ผํ•จ
  3. ๊ด„ํ˜ธ ์‚ฌ์ด์—๋Š” ํฌํ•จ๊ด€๊ณ„๋งŒ ์กด์žฌํ•จ

ex) ์ž˜๋ชป๋œ ๊ด„ํ˜ธ ์‚ฌ์šฉ
(a(b), a(b)c), a{b(c[d]e}f)

์Šคํƒ์„ ์ด์šฉํ•œ ๊ด„ํ˜ธ ๊ฒ€์‚ฌ

์ˆ˜์‹์„ ํ‘œํ˜„ํ•œ ๋ฌธ์ž์—ด์˜ ์˜ˆ
if((i==0)&&(j==0)

๋ฌธ์ž์—ด์—์„œ ํ•œ ๋ฌธ์ž์”ฉ ์ฝ์–ด, ๋งŒ์•ฝ ์—ฌ๋Š”๊ด„ํ˜ธ์ด๋ฉด ์Šคํƒ์— ์ €์žฅํ•˜๊ณ , ๋‹ซ์€๊ด„ํ˜ธ์ผ๊ฒฝ์šฐ ์Šคํƒ์—์„œ popํ•˜์—ฌ ๋น„๊ต.
์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ๊บผ๋‚ด์–ด ๋น„๊ตํ•˜๋Š”๋™์•ˆ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋ฉด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉ๋˜์ง€ ๋ชปํ•œ ๊ด„ํ˜ธ๋ผ๊ณ  ํŒ๋‹จ

๊ด„ํ˜ธ๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ์š”


Function call

ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ด€๋ฆฌ
: ํ”„๋กœ๊ทธ๋žจ์—์„œ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๋ณต๊ท€์— ๋”ฐ๋ฅธ ์ˆ˜ํ–‰ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌ

  1. ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰์„ ์™„๋ฃŒํ•˜๊ณ  ๋ณต๊ท€ํ•˜๋Š” ํ›„์ž…์„ ์ถœ ๊ตฌ์กฐ์ด๋ฏ€๋กœ, ํ›„์ž…์„ ์ถœ ๊ตฌ์กฐ์˜ ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜ํ–‰์ˆœ์„œ ๊ด€๋ฆฌ
  2. ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•˜๋ฉด ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜ ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์ˆ˜ํ–‰ ํ›„ ๋ณต๊ท€ํ•  ์ฃผ์†Œ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์Šคํƒ ํ”„๋ ˆ์ž„์— ์ €์žฅํ•˜์—ฌ ์‹œ์Šคํ…œ ์Šคํƒ์— ์‚ฝ์ž…
  3. ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ์‹œ์Šคํ…œ ์Šคํƒ์˜ top ์›์†Œ(์Šคํƒ ํ”„๋ ˆ์ž„)๋ฅผ ์‚ญ์ œ(pop)ํ•˜๋ฉด์„œ ํ”„๋ ˆ์ž„์— ์ €์žฅ๋˜์–ด์žˆ๋˜ ๋ณต๊ท€์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ณต๊ท€
  4. ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๋ณต๊ท€์— ๋”ฐ๋ผ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ์‹œ์Šคํ…œ ์Šคํƒ์€ ๊ณต๋ฐฑ ์Šคํƒ์ด ๋จ

ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆ˜ํ–‰ ์ˆœ์„œ

  1. ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ mainํ•จ์ˆ˜์— ๋Œ€ํ•œ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์Šคํƒ์— ์œ„์น˜ํ•œ๋‹ค. ์ด๋•Œ top์€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜, ์ฆ‰ mainํ•จ์ˆ˜์— ๋Œ€ํ•œ ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  2. ๋ฉ”์ธํ•จ์ˆ˜์—์„œ F_1ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
  3. F_1ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์Šคํƒ์— ์‚ฝ์ž…๋˜๊ณ  top์ด ์ด๋ฅผ ๊ฐ€๋ฆฌํ‚ด
  4. F_1ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์‹œ์ž‘๋จ
  5. F_1์—์„œ F_2ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
  6. F_2ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์Šคํƒ์— ์‚ฝ์ž…๋˜๊ณ  top์ด ์ด๋ฅผ ๊ฐ€๋ฆฌํ‚ด
  7. F_2ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์‹œ์ž‘๋จ
  8. F_2ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์ข…๋ฃŒ๋จ.
  9. F_2ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์Šคํƒํ”„๋ ˆ์ž„์— ์ €์žฅ๋œ F_1ํ•จ์ˆ˜์˜ ๋ณต๊ท€์ฃผ์†Œ๋ฅผ ์กฐํšŒํ•˜๊ณ , F_1ํ•จ์ˆ˜๋กœ ๋ณต๊ท€. ์ด๋•Œ ์Šคํƒ์—์„œ top์˜ ์œ„์น˜ ๋ณ€๊ฒฝ๋จ. ๋”์ด์ƒ F_2์— ๋Œ€ํ•œ ์Šคํƒ ํ”„๋ ˆ์ž„์˜ ์ •๋ณด๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋Š”๊ฒƒ์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.
  10. F_2ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ณต๊ท€ํ›„, F_1ํ•จ์ˆ˜์˜ ๋‚จ์€๋ถ€๋ถ„์„ ์ˆ˜ํ–‰ํ•˜๊ณ  F_1ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋จ
  11. F_1ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์Šคํƒ์—์„œ top์„ ๋ณ€๊ฒฝํ•˜์—ฌ F_1์˜ ์Šคํƒํ”„๋ ˆ์ž„ ์ •๋ณด๋ฅผ ๋ฌดํšจํ™” ํ•˜๊ณ  mainํ•จ์ˆ˜๋กœ ๋ณต๊ท€ํ•œ๋‹ค.
  12. mainํ•จ์ˆ˜๋กœ ๋ณต๊ท€ํ›„, mainํ•จ์ˆ˜์˜ ๋‚จ์€ ๋ถ€๋ถ„์„ ์ˆ˜ํ–‰ํ•˜๊ณ  mainํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰์„ ์ข…๋ฃŒํ•œ๋‹ค.

์žฌ๊ท€ ํ˜ธ์ถœ

ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ

  • ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜์—ฌ ์ˆœํ™˜ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ
  • ํ•จ์ˆ˜์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ผ๋ฐ˜์ ์ธ ํ˜ธ์ถœ๋ฐฉ์‹๋ณด๋‹ค ์žฌ๊ท€ ํ˜ธ์ถœ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋””๋ฒ„๊น…์ด ์–ด๋ ต๊ณ  ์ž˜๋ชป ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋จ

์žฌ๊ท€ํ˜ธ์ถœ์€ ํ•จ์ˆ˜ํ˜ธ์ถœ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ์Šคํƒํ”„๋ ˆ์ž„์œผ๋กœ ์Šคํƒ์— ์ €์žฅ๋˜๋Š” ๊ฐ’์ด ์ž…๋ ฅ๊ฐ’์ด ํ‹€๋ฆฐ ๊ฐ™์€ ํ•จ์ˆ˜์˜ ์Šคํ… ํ”„๋ ˆ์ž„์„ ์ €์žฅํ•œ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์กด์žฌ


Memoization

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด

์žฌ๊ท€ ํ˜ธ์ถœ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ - ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

  • 0๊ณผ 1๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ด์ „์˜ ๋‘ ์ˆ˜ ํ•ฉ์„ ๋‹ค์Œ ํ•ญ์œผ๋กœ ํ•˜๋Š” ์ˆ˜์—ด
    0,1,1,2,3,5,8,13,...
  • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ i๋ฒˆ์งธ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜ F๋ฅผ ์ •์˜ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Œ
  • ์œ„์˜ ์ •์˜๋กœ๋ถ€ํ„ฐ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ i๋ฒˆ์งธ ํ•ญ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

def fibo(n):
	if n<2:
    	return n
    else:
    	return fibo(n-1)+fibo(n-2)

-> ์—„์ฒญ๋‚œ ์ค‘๋ณต ํ˜ธ์ถœ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ !

-> ๊ฐ™์€ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋งŽ์ด ์ค‘๋ณต๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ธฐ๋ฒ•์ด Memoization


Memoization

Memoization์˜ ์˜๋ฏธ

  • ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ์ด์ „์— ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด์„œ ๋งค๋ฒˆ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ์ „์ฒด์ ์ธ ์‹คํ–‰์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 
  • DP(๋™์ ๊ณ„ํš๋ฒ•)์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ธฐ์ˆ 

Memoization ๋‹จ์–ด์˜ ์˜๋ฏธ

  • ๊ธ€์ž ๊ทธ๋Œ€๋กœ ํ•ด์„ํ•˜๋ฉด '๋ฉ”๋ชจ๋ฆฌ์— ๋„ฃ๊ธฐ(to put in memory)'๋ผ๋Š” ์˜๋ฏธ
  • '๊ธฐ์–ต๋˜์–ด์•ผ ํ•  ๊ฒƒ'์ด๋ผ๋Š” ๋œป์˜ ๋ผํ‹ด์–ด Memorandum์—์„œ ํŒŒ์ƒ
  • ํ”ํžˆ '๊ธฐ์–ตํ•˜๊ธฐ', '์•”๊ธฐํ•˜๊ธฐ'๋ผ๋Š” ๋œป์˜ Memorization๊ณผ ํ˜ผ๋™ํ•˜์ง€๋งŒ, ์ •ํ™•ํ•œ ๋‹จ์–ด๋Š” Memoization์œผ๋กœ ๋™์‚ฌํ˜•์€ memoize์ด๋‹ค.

Memoization ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ fibo(n)์˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์ž๋งˆ์ž ์ €์žฅํ•˜๋ฉด ์‹คํ–‰์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

# memo๋ฅผ ์œ„ํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ ,
# memo[0]์„ 0์œผ๋กœ memo[1]๋Š” 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

def fibo1(n):
	global memo
    if n>=2 and len(memo)<=n:
    	memo.append(fibo1(n-1)+fibo1(n-2))
   	return memo[n]
memo=[0,1]
  • ์กฐ๊ฑด๋ฌธ์—์„œ memo๋ผ๋Š” ๋ฆฌ์ŠคํŠธ์— ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ์กฐ์‚ฌ.
  • ๋งŒ์•ฝ ๊ธฐ์กด์— ๊ณ„์‚ฐํ•˜์—ฌ ์ €์žฅ๋œ ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

DP(๋™์  ๊ณ„ํš๋ฒ•)

DP(๋™์  ๊ณ„ํš๋ฒ•) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • Dynamic Programming์˜ ์•ฝ์ž
  • ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์ด ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋จผ์ € ์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์„ ๋ชจ๋‘ ํ•ด๊ฒฐํ•œ ํ›„์—, ๊ทธ ํ•ด๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋ณด๋‹ค ํฐ ํฌ๊ธฐ์˜ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐ
  • ์ตœ์ข…์ ์œผ๋กœ ์›๋ž˜ ์ฃผ์–ด์ง„ ์ž…๋ ฅ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ•

DP(๋™์  ๊ณ„ํš๋ฒ•)๋ฅผ ์ ์šฉํ•œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์— DP ์ ์šฉํ•˜๊ธฐ
-> ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ๋‹ต์œผ๋กœ๋ถ€ํ„ฐ ๋ณธ ๋ฌธ์ œ์˜ ๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์ ๋ถ€๋ถ„๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์–ด DP๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ๋ฌธ์ œ๋ฅผ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋ถ„ํ• 

    ์ตœ์ข…์ ์œผ๋กœ ๋‹จ์œ„์š”์†Œ์ธ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  2. ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๋Š” ์ผ์„ ๋๋ƒˆ์œผ๋ฉด ๊ฐ€์žฅ ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋ถ€ํ„ฐ ํ•ด๋ฅผ ๊ตฌํ•จ

  3. ๊ทธ ๊ฒฐ๊ณผ๋Š” ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ณ , ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒ์œ„ ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ๊ตฌํ•จ

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ DP์— ์ ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

def fibo2(n):
	f=[0,1]
  	
    for i in range(2, n+1):
    	f.append(f[i-1]+f[i-2])
    
    return f[n]

๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ž‘์€๊ฐ’๋ถ€ํ„ฐ ์ƒ์œ„๋กœ ๊ตฌํ•ด๋‚˜๊ฐ

DP ๊ตฌํ˜„ ๋ฐฉ์‹

ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

1. recursive ๋ฐฉ์‹ : fibo1()
ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ์ด์šฉํ•œ ์žฌ๊ท€์  ๋ฐฉ๋ฒ•
์žฌ๊ท€์  ๊ตฌ์กฐ๋Š” ๋‚ด๋ถ€์— ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

2. iterative ๋ฐฉ์‹ : fibo2()
๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•œ ๋ฐ˜๋ณต์  ๋ฐฉ๋ฒ•

Memoization์„ ์žฌ๊ท€์  ๊ตฌ์กฐ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฐ˜๋ณต์  ๊ตฌ์กฐ๋กœ DP๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด ์„ฑ๋Šฅ๋ฉด์—์„œ ๋ณด๋‹ค ํšจ์œจ์ ์ด๋‹ค!


DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰)

DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰)์ด๋ž€?

๋น„์„ ํ˜•๊ตฌ์กฐ์ธ ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ๋Š” ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„๋œ ๋ชจ๋“  ์ž๋ฃŒ๋ฅผ ๋น ์ง์—†์ด ๊ฒ€์ƒ‰ํ•˜๋Š”๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” 2๊ฐ€์ง€ ์กด์žฌ
1. ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS) -> ์Šคํƒ ์ด์šฉ
2. ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(Breadth First Search, BFS)

DFS ๋ฐฉ๋ฒ•

  1. ์‹œ์ž‘ ์ •์ ์˜ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š” ๊ณณ๊นŒ์ง€ ๊นŠ์ด ํƒ์ƒ‰
  2. ๋” ์ด์ƒ ๊ฐˆ๊ณณ์ด ์—†๊ฒŒ ๋˜๋ฉด, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋งŒ๋‚ฌ๋˜ ๊ฐˆ๋ฆผ๊ธธ ๊ฐ„์„ ์ด ์žˆ๋Š” ์ •์ ์œผ๋กœ ๋˜๋Œ์•„์˜ด
  3. ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์˜ ์ •์ ์œผ๋กœ ํƒ์ƒ‰์„ ๊ณ„์† ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฒฐ๊ตญ ๋ชจ๋“  ์ •์ ์„ ๋ฐฉ๋ฌธํ•˜์—ฌ ์ˆœํšŒ

๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋งŒ๋‚ฌ๋˜ ๊ฐˆ๋ฆผ๊ธธ์˜ ์ •์ ์œผ๋กœ ๋˜๋Œ์•„๊ฐ€์„œ ๋‹ค์‹œ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ›„์ž…์„ ์ถœ ๊ตฌ์กฐ์˜ ์Šคํƒ์„ ์‚ฌ์šฉ

DFS ์•Œ๊ณ ๋ฆฌ์ฆ˜


์Šคํƒ์ด ๊ณต๋ฐฑ์ด ๋ ๋•Œ๊นŒ์ง€ ์œ„์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณต

DFS์˜ ์˜ˆ

๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ทธ๋ž˜ํ”„

A๋ถ€ํ„ฐ G๊นŒ์ง€ ์ •์  ๊ฐ€์ง€๋ฉฐ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ

  1. ๊ฒฝ๋กœ๋ฅผ ์—ญ์ถ”์ ํ•  ๋•Œ ํ•„์š”ํ•œ ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์ •์ ์— ๋ฐฉ๋ฌธํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” visited ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ ์–ธ

  2. DFS ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ ์— ๋ฐฉ๋ฌธ์‹œ์ž‘ ์ •์ ์ด ์ฃผ์–ด์ง. ์ด๋ฅผ visited ๋ฆฌ์ŠคํŠธ์— ๋ฐฉ๋ฌธํ–ˆ๋‹ค๊ณ  ํ‘œ์‹œํ•จ (์—ฌ๊ธฐ์„œ๋Š” ์ •์  A๊ฐ€ ์‹œ์ž‘ ์ •์ )

  3. ์ •์  A์˜ ์ธ์ ‘ ์ •์ ์„ ์กฐ์‚ฌํ•จ. B,C์˜ 2๊ฐœ ์ •์ ์ด ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€๊ฒƒ์„ visited ๋ฆฌ์ŠคํŠธ๋ฅผ ์กฐ์‚ฌํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒ (์—ฌ๊ธฐ์„œ๋Š” ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ B๋ฅผ ์„ ํƒ)

  4. B ์ •์  ์ •๋ณด๋ฅผ w๋ณ€์ˆ˜์— ์ €์žฅ. v๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๋ฐฉ๋ฌธํ•œ ์ •์ ์˜ ์ •๋ณด๋ฅผ ์Šคํƒ์— ์ €์žฅ. ์ด๋Š” ์ดํ›„ ๋˜๋Œ์•„์˜ฌ ์ •์ ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š”๊ฒƒ์ด๋‹ค.

  5. w์— ์ €์žฅ๋œ ์ •์  ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด w๋ฅผ ๋ฐฉ๋ฌธ, ์ฆ‰ ํ™”๋ฉด์— ์ •์  ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋Š” ์ •๋ณด๋ฅผ ์ €์žฅํ•จ. ๊ทธ๋ฆฌ๊ณ  w์ •์ ์„ ์Šคํƒ์— push

  6. v๋ณ€์ˆ˜์— w์˜ ์ •๋ณด๋ฅผ ์ €์žฅ.

  7. v์ •์ , ์ฆ‰ ๋ฐฉ๊ธˆ ๋ฐฉ๋ฌธํ•œ B ์ •์ ์˜ ์ด์›ƒํ•œ ์ •์ , A D E ์ค‘ A๋Š” ๋ฐฉ๋ฌธํ–ˆ๋‹ค๊ณ  ํ‘œ์‹œ๋˜์–ด ์žˆ๊ณ  D์™€ E์ค‘ D๋ฅผ ์„ ํƒํ•˜์—ฌ w์— ์ €์žฅ.

  8. 5~6๋ฒˆ ๋ฐ˜๋ณต

  9. D์˜ ์ด์›ƒํ•œ ์ •์  ์ค‘, F๋ฅผ ์„ ํƒํ•˜์—ฌ w์— ์ €์žฅ

  10. 5~6๋ฒˆ ๋ฐ˜๋ณต

  11. F์— ์ด์›ƒํ•œ ์ •์  ์ค‘, E๋ฅผ ์„ ํƒํ•˜์—ฌ w์— ์ €์žฅ

  12. 5~6๋ฒˆ ๋ฐ˜๋ณต

  13. E์— ์ด์›ƒํ•œ ์ •์  ์ค‘, C๋ฅผ ์„ ํƒํ•˜์—ฌ w์— ์ €์žฅ

  14. 5~6๋ฒˆ ๋ฐ˜๋ณต

  15. C์— ์ด์›ƒํ•œ ์ •์  ์ค‘, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†์Œ. w๋Š” ๋นˆ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

  16. w๊ฐ€ ๋นˆ๊ฐ’์ด๋ฏ€๋กœ ์Šคํƒ์—์„œ ํ•˜๋‚˜์˜ ์ •์  ์ •๋ณด๋ฅผ popํ•˜๊ณ  ์ด๋ฅผ v์— ์ €์žฅํ•จ.

  17. v์— ์ €์žฅ๋œ ์ •์ , C์˜ ์ด์›ƒ ์ •์  ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— w๋Š” ๋นˆ๊ฐ’์„ ๊ฐ€์ง

  18. 16๋ฒˆ ๋ฐ˜๋ณต

  19. v์— ์ €์žฅ๋œ ์ •์ , E์˜ ์ด์›ƒ ์ •์  ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— w๋Š” ๋นˆ๊ฐ’์„ ๊ฐ€์ง

  20. 16๋ฒˆ ๋ฐ˜๋ณต

  21. v์— ์ €์žฅ๋œ ์ •์ , F์˜ ์ด์›ƒ ์ •์  ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ , G๋ฅผ ์ฐพ์•„ w์— ์ €์žฅ.

  22. v์— ์ €์žฅ๋œ ์ •์  ์ •๋ณด F๋ฅผ ์Šคํƒ์— ์ €์žฅ.

  23. 5~6๋ฒˆ ๋ฐ˜๋ณต

  24. G์— ์ด์›ƒํ•œ ์ •์  ์ค‘, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†์œผ๋ฏ€๋กœ w๋Š” ๋นˆ๊ฐ’์„ ๊ฐ€์ง

  25. 16๋ฒˆ ๋ฐ˜๋ณต

  26. 24๋ฒˆ ๋ฐ˜๋ณต

  27. 16๋ฒˆ ๋ฐ˜๋ณต

  28. 21๋ฒˆ ๋ฐ˜๋ณต

  29. 16๋ฒˆ ๋ฐ˜๋ณต

  30. v์— ์ €์žฅ๋œ ์ •์ , D์˜ ์ด์›ƒ ์ •์  ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— w๋Š” ๋นˆ๊ฐ’์„ ๊ฐ€์ง

  31. 16๋ฒˆ ๋ฐ˜๋ณต

  32. v์— ์ €์žฅ๋œ ์ •์ , B์˜ ์ด์›ƒ ์ •์  ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— w๋Š” ๋นˆ๊ฐ’์„ ๊ฐ€์ง

  33. 16๋ฒˆ ๋ฐ˜๋ณต

  34. v์— ์ €์žฅ๋œ ์ •์ , A์˜ ์ด์›ƒ ์ •์  ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— w๋Š” ๋นˆ๊ฐ’์„ ๊ฐ€์ง

  35. w๊ฐ€ ๋นˆ ๊ฐ’์ด๋ฏ€๋กœ ์Šคํƒ์—์„œ popํ•˜๋ ค ํ•˜์ง€๋งŒ ์Šคํƒ์ด ๋น„์–ด์žˆ์Œ. ๋”ฐ๋ผ์„œ v๋Š” ๋นˆ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ v๊ฐ€ ๋นˆ๊ฐ’์ด๋ฏ€๋กœ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.

์ •๋ฆฌ

  • ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ณด๋ฉด A,B,D,F,E,C,G ์ˆœ์œผ๋กœ ํƒ์ƒ‰ํ•จ.
    -> ํ•œ ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๊ณ„์† ํƒ์ƒ‰ํ•˜๋‹ค๊ฐ€ ๋” ์ด์ƒ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฉด ๋‹ค์‹œ ๋˜๋Œ์•„์˜ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํƒ์ƒ‰ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‹ค์‹œ ๋˜๋Œ์•„ ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์Šคํƒ์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋Š”๊ฒƒ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค.

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ