𧩠<μ½λ©ν μ€νΈ ν©κ²©μ λκΈ°: νμ΄μ¬ νΈ> 1λ μ€ν°λ κΈ°λ‘μ λλ€.
μ€ν(Stack)
λ¨Όμ μ λ ₯ν λ°μ΄ν°λ κ°μ₯ λμ€μ κΊΌλΌ μ μλ μ μ νμΆ(FILO, First-In-Last-Out) μλ£κ΅¬μ‘°μ΄λ€. 'κ°μ₯ μ΅κ·Όμ κ°'μ΄ νμν λ νμ©ν μ μλ€.
νμ΄μ¬μμλ μ€ν μλ£κ΅¬μ‘°λ₯Ό μ§μνμ§ μκΈ° λλ¬Έμ 리μ€νΈλ‘ ꡬνν΄μ μ΄μ©ν μ μλ€.
μ€ν ADT
μ°μ°
- boolean
isFull()
: μ€νμ λ€μ΄μλ λ°μ΄ν° κ°μκ° max_sizeμΈμ§ νμΈνμ¬ boolean κ°μ λ°ννλ€. μ¦, μ€νμ λ°μ΄ν°κ° κ°λ μ°¨ μμΌλ©΄ True, κ·Έλ μ§ μλ€λ©΄ Falseλ₯Ό λ°ννλ€. - boolean
isEmpty()
: μ€νμ΄ λΉμ΄μλμ§ νμΈνμ¬ boolean κ°μ λ°ννλ€. μ¦, λ°μ΄ν°κ° νλλΌλ μμΌλ©΄ False, μμ ν λΉμ΄μμΌλ©΄ Trueλ₯Ό λ°ννλ€. - void
push(ItemType item)
: μ€νμ λ°μ΄ν°λ₯Ό μ½μ νλ€. - ItemType
pop()
: μ€νμ μ΅μλ¨μ μλ λ°μ΄ν°λ₯Ό κΊΌλ΄μ΄ λ°ννλ€. μ¦, κ°μ₯ μ΅κ·Όμ νΈμν λ°μ΄ν°λ₯Ό κΊΌλ΄μ΄ λ°ννλ€.
μν
- int
top
: μ€νμ μ΅μλ¨μ μλ λ°μ΄ν°, μ¦ μ΅κ·Όμ νΈμν λ°μ΄ν°μ μμΉλ₯Ό κΈ°λ‘νλ€. μ€νμ΄ λΉμ΄ μμΌλ©΄ -1λ‘ κΈ°λ‘ν μ μλ€. - ItemType
data[max_size]
: μ€νμμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ λ°°μ΄μ΄λ€.
ꡬν
stack = [ ] # μ€ν 리μ€νΈ μ΄κΈ°ν
max_size = 100 # μ€νμ μ΅λ ν¬κΈ°
def isFull(stack):
# μ€νμ΄ κ°λ μ°Όλμ§ νμΈνλ ν¨μ
# μ€νμ νμ¬ ν¬κΈ°κ° μ΅λ ν¬κΈ°μ κ°μΌλ©΄ μ€νμ΄ κ°λ μ°¬ κ²μ΄λ€.
return len(stack) == max_size
def isEmpty(stack):
# μ€νμ΄ λΉμ΄ μλμ§ νμΈνλ ν¨μ
return len(stack) == 0
def push(stack, item):
# μ€νμ λ°μ΄ν°λ₯Ό μΆκ°νλ ν¨μ
if isFull(stack):
print("Stack is full.")
else:
stack.append(item)
def pop(stack):
# μ€νμμ λ°μ΄ν°λ₯Ό κΊΌλ΄λ ν¨μ
if isEmpty(stack):
print("Stack is empty.")
return None
else:
return stack.pop( )
νμ΄μ¬μΌλ‘ ꡬνν λλ push()
λ pop()
μ λ°λ‘ ꡬννμ§ μκ³ κ°κ° append()
μ pop()
ν¨μλ₯Ό μ΄μ©νλ©΄ λκ² λ€.
μ€νμ΄ νμ©λλ κ²½μ°
ν¨μμ νΈμΆ
ν¨μκ° νΈμΆλλ©΄ λ©λͺ¨λ¦¬μ μ€ν μμμ κ·Έ ν¨μμ νΈμΆ μ λ³΄κ° μ°¨λ‘λλ‘ μ μ₯λλ€. μ΄λ μ μ₯λλ ν¨μμ νΈμΆ μ 보μλ ν¨μμ 맀κ°λ³μ, νΈμΆμ΄ λλκ³ λμκ° λ°ν μ£Όμκ°, ν¨μμμ μ μΈλ μ§μ λ³μ λ±μ΄ μλ€. μ΄λ¬ν νΈμΆ μ 보λ₯Ό μ€ν νλ μμ΄λΌκ³ νλ€.
μ€ν μμμ ν¨μμ νΈμΆκ³Ό ν¨κ» ν λΉλκ³ νΈμΆμ΄ μλ£λλ©΄ λ°νλλ€.
λ€μμ μ½λλ₯Ό μ€νν΄λ³Έλ€κ³ νμ.
def main():
first()
def first():
print("첫 λ²μ§Έ ν¨μμ
λλ€.")
second()
def second():
print("λ λ²μ§Έ ν¨μμ
λλ€.")
if __name__ == "__main__":
main()
first()
λ main()
μμ νΈμΆλλ©°, second()
λ first()
μμ νΈμΆλκ³ μλ€.
μ΄λ₯Ό μ 리νλ©΄ λ€μμ κ·Έλ¦Όκ³Ό κ°λ€.
μ΄λ₯Ό ν΅ν΄ λ€μκ³Ό κ°μ μ¬μ€λ μ μ μλ€.
- νμ¬ μ€νλκ³ μλ ν¨μλ μ€ν μμμ μ΅μλ¨μ μμΉν ν¨μμ΄λ€.
- κ° ν¨μλ₯Ό νΈμΆν ν¨μ, μ¦ κ° ν¨μκ° νΈμΆλ μμΉλ ν΄λΉ ν¨μμ μλμ μμΉν ν¨μμ΄λ€.
μ¬κ·
μ¬κ·(recursion)μ΄λ μμ μ μ μν λ μκΈ° μμ μ μ¬μ°Έμ‘°νλ λ°©λ²μ΄λ€. μ¬κ· ν¨μλ μ€ν κ³Όμ μμ μκΈ° μμ μ νΈμΆνκ² λλ€.
μ¬κ· ν¨μμ λν΄ μ€ν μμμ λ€μκ³Ό κ°μ λͺ¨μ΅μ ν κ²μ΄λ€.
μ€ν μμμ νμ λμ΄ μκΈ° λλ¬Έμ μ€ν μμμ΄ κ°λ μ°° λκΉμ§ ν¨μκ° κ³μ νΈμΆλλ©΄ λ°νμ μλ¬κ° λ°μνλ€. λ°λΌμ μ¬κ· ν¨μλ₯Ό μ μν λλ λ€μμ κ³ λ €ν΄μΌ νλ€.
- λ°λ‘ ν μ μκ±°λ μ’ λ£ μ‘°κ±΄μ ν¬ν¨ν base caseκ° ν κ° μ΄μ μ‘΄μ¬ν΄μΌ νλ€.
- λ¬Έμ λ₯Ό μ’ λ μκ²(simpler&smaller) λ§λλ λ°©μμΌλ‘ λμν΄μΌ νλ€.
β» base caseλ λμ΄μ μ¬κ· νΈμΆμ νμ§ μκ³ λ μ§μ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ μ¬λ‘λ₯Ό λ»νλ€.
π Reference
μ½λ© ν μ€νΈ ν©κ²©μ λκΈ°: νμ΄μ¬ νΈ, λ°κ²½λ‘, 골λ λλΉ.
μ½λ© ν μ€νΈ ν©κ²©μ λκΈ°: νμ΄μ¬ νΈ | λ°κ²½λ‘ - κ΅λ³΄λ¬Έκ³
μ½λ© ν μ€νΈ ν©κ²©μ λκΈ°: νμ΄μ¬ νΈ | β μ½λ© ν μ€νΈ ν©κ²©μκ° λλ κ°μ₯ νμ€ν λ°©λ²! β νλ‘κ·Έλλ¨Έμ€ μ 곡, μ λ¬Έκ°κ° λͺ¨μ¬ μμ ν λΉμΆ 100λ¬Έμ λ‘ μ² μ νκ² λλΉνμΈμμ μ μ¬μ μ½λ© ν μ€νΈ
product.kyobobook.co.kr
'Study > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
05. λ°°μ΄ (1) | 2024.01.13 |
---|---|
04. μ½λ© ν μ€νΈ νμ λ¬Έλ²(Python) (3) | 2024.01.06 |
03. μκ³ λ¦¬μ¦μ ν¨μ¨ λΆμ (0) | 2024.01.06 |