์žฌ๊ท€ํ•จ์ˆ˜(Recursive function) : ์ž๊ธฐ ์ž์‹ ์„ ๋ถ€๋ฅด๋Š” ํ•จ์ˆ˜

๋ฆฌ์ŠคํŠธ(List) : ๋™์ ์ธ ๋ฐฐ์—ด (ํŠœํ”Œ(tuple) : ์ •์ ์ธ ๋ฐฐ์—ด)

LIFO : Last in Fisrt out

 

์Šคํƒ(stack) : ์ผ์ข…์˜ ๋ฐ”๋‹ฅ์ด ๋ง‰ํžŒ ์ƒ์ž ํ˜น์€ ๋”๋ฏธ, ๋‚˜์ค‘์— ๋„ฃ์€ ๋ฌผ๊ฑด์€ ๋‚˜์ค‘์— ๊บผ๋‚ผ ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ,

LIFO(Last In First Out) ๋ผ๊ณ ๋„ ํ•œ๋‹ค.

 

์Šคํƒ(Stack) : ๋”๋ฏธ

์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ด ์Šคํƒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. (Push๋Š” ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅ, Pop์€ ์ž๋ฃŒ๋ฅผ ์ถœ๋ ฅ)

#์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์Šคํƒ๊ตฌ์กฐ
def stack(start , end):
    if start <= end:
        print('Push :', start)
        stack(start + 1, end)
        print("Pop  :", start)
    else:
        print("--------")

stack(0, 5)

#๊ฒฐ๊ณผ
Push : 0
Push : 1
Push : 2
Push : 3
Push : 4
Push : 5
--------
Pop  : 5
Pop  : 4
Pop  : 3
Pop  : 2
Pop  : 1
Pop  : 0

์งง์€ ์ฝ”๋”ฉ์ด์ง€๋งŒ, ์กฐ๊ธˆ์€ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

List๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ์Šคํƒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#List๋ฅผ ์ด์šฉํ•œ ์Šคํƒ๊ตฌ์กฐ
data_stack = list()

for i in range(10):
    data_stack.append(i)
    print('Push :', data_stack)

for i in range(10):
    data_stack.pop()
    print('Pop  :', data_stack)
    
#๊ฒฐ๊ณผ
Push : [0]
Push : [0, 1]
Push : [0, 1, 2]
Push : [0, 1, 2, 3]
Push : [0, 1, 2, 3, 4]
Push : [0, 1, 2, 3, 4, 5]
Push : [0, 1, 2, 3, 4, 5, 6]
Push : [0, 1, 2, 3, 4, 5, 6, 7]
Push : [0, 1, 2, 3, 4, 5, 6, 7, 8]
Push : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Pop  : [0, 1, 2, 3, 4, 5, 6, 7, 8]
Pop  : [0, 1, 2, 3, 4, 5, 6, 7]
Pop  : [0, 1, 2, 3, 4, 5, 6]
Pop  : [0, 1, 2, 3, 4, 5]
Pop  : [0, 1, 2, 3, 4]
Pop  : [0, 1, 2, 3]
Pop  : [0, 1, 2]
Pop  : [0, 1]
Pop  : [0]
Pop  : []

 

์ข€ ๋” ์ง๊ด€์ ์ด๊ณ , ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์Šคํƒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์Šคํƒ๊ตฌ์กฐ๋Š” ๋งŽ์€ ๊ณณ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

์œˆ๋„์šฐ์—์„œ Ctrl+Z,  ๋ธŒ๋ผ์šฐ์ €์— ๋’ค๋กœ ๊ฐ€๊ธฐ ๋“ฑ ์Šคํƒ๊ตฌ์กฐ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. 

 

๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ์ด์ง€๋งŒ, ๋งŽ์ด ์“ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
18์ง„์ˆ˜