β 1. μ€νμ κ°λ 
(1) μ€νμ μ μ

- κ°μ²΄μ κ·Έ κ°μ²΄κ° μ μ₯λλ μμλ₯Ό κΈ°μ΅νλ λ°©λ²μ κ΄ν μλ£κ΅¬μ‘°μ΄λ€.
 - κ°μ₯ λ¨Όμ  μ λ ₯λ μλ£κ° κ°μ₯ λμ€μ μΆλ ₯λλ κ΄κ³λ₯Ό ννν¨
 - μ½κ²λ§ν΄, μ€νμ νμ μ μΆλ‘μ¨ κ°μ₯ λμ€μ λ£μ κ°μ²΄κ° κ°μ₯ λ¨Όμ  λμ¨λ€.
 - μ΄λ¬ν μΆμ μλ£νμ ꡬννλ €λ©΄ ꡬνκ³Όμ μμ μ μ₯λλ μμλ₯Ό κΈ°μ΅ν΄μ€μΌ νλ€λ μλ―Έμ΄λ€.
 - κ΄κ³λ₯Ό νννκΈ° μν΄μ μ°μ°μ΄ νμνλ©°, κ°μ²΄μ λν μ μμ μ°μ°μ΄ λͺ¨μ¬μ μμκ° κΈ°μ΅λλ μ€νμ μΆμ μλ£νμ΄ μμ±λ¨
 - μ½κ²λ§ν΄, μλ£ κ΅¬μ‘°μμ λ°μ΄ν°λ₯Ό λ¨μν μ μ₯νλ κ²λΏλ§ μλλΌ, λ°μ΄ν°λ₯Ό λ€λ£¨λ μ°μ°μ΄ μ€μνλ©° μ€ν(abstract data type, ADT)μ **λ°μ΄ν°(κ°μ²΄) + μ°μ°(push, pop λ±)**μ΄ λͺ¨μ¬ λ§λ€μ΄μ§κ³ μ€νμ νμ μ μΆ(LIFO) μμλ₯Ό μ μ§νλ€λ νΉμ±μ κ°μ§λ€λ μλ―Έμ΄λ€.
 - 0κ° μ΄μμ μμλ₯Ό κ°λ μ ν μμ 리μ€νΈμ΄λ€.
 - push(add)μ pop(delete)μ°μ°μ΄ νκ³³μμ λ°μλλ μλ£κ΅¬μ‘°μ΄λ€.
 
β 2. μ€νμ μΆμ μλ£ν
(1) μ€νμ μΆμμλ£ν
- μ€ν κ°μ³¬: 0κ° μ΄μμ μμλ₯Ό κ°λ μ ν μμ 리μ€νΈ
 
(2) CreateStack μ°μ° ( Stack μΆμ μλ£ν )

- Stack μλ£κ΅¬μ‘°μ μΆμ μλ£νμΌλ‘, CreateStack μ°μ°μ λν μ μμ΄λ€.
 
(3) Push μ°μ°

- μ€νμ Push μ°μ°μ κ°μ₯ μμ λ°μ΄ν°λ₯Ό μ½μ νκ³ , ν΄λΉ μ€νμ λ°νμ ν΄μ€λ€.
 - ν΄λΉ λΆλΆμ Stack μ Push μ°μ°μ λν μ μμΈ μΆμ μλ£νμ΄λ€.
 
(4) Pop μ°μ°

- κ°μ₯ μμ μλ μμλ₯Ό μμ νκ³ λ°νμ ν΄μ£Όλ μ°μ°μ μλ―Ένλ€.
 
(5) μ 리
- μ€νμ λ©λͺ¨λ¦¬μ μμ λ‘μ΄ μ¬μ©(무μμ μ κ·Ό)μ μ΅μ νκ³ , λ°μ΄ν°λ₯Ό μΌμ ν κ·μΉ(LIFO)μΌλ‘λ§ μ κ·Όνλλ‘ κ΅¬μ‘°νν¨μΌλ‘μ¨ ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μκ² λ§λ μλ£κ΅¬μ‘°μ΄λ€. μ¦, κ·μΉμ λ§λ¦μΌλ‘μ¨ μ νμ λλ€λ κ²μ΄ ν΅μ¬μ΄λ€.
 - ν λ§λλ‘, μ€νμ μμ λ₯Ό μ νν΄ μμ 보μ₯κ³Ό ν¨μ¨μ μ»λ μλ£κ΅¬μ‘°λ‘ μ΄ν΄ ν μ μμ.
 - μ€νμ κΈ°λ³Έμ μΌλ‘ push(μ½μ ), pop(μμ ), peek(맨 μ κ° νμΈ) μ΄ μΈ κ°μ§ μ°μ°λ§ μ 곡νλ€.
 - κ·Έ μΈ μμμ μμΉμ μ κ·Όνκ±°λ μ€κ° λ°μ΄ν°λ₯Ό μμ νλ κ²μ νμ©λμ§ μμ
 - μ΄λ¬ν μ ν λλ¬Έμ λ©λͺ¨λ¦¬ κ΄λ¦¬κ° κ°λ¨ν΄μ§κ³ , μ°μ°λ ν¨μ¨μ μ΄κ² λ¨. ( μ¦, μ νμ μλ£κ΅¬μ‘°μ ν΅μ¬μΈ κ²μ΄λ€. )
 - λ°μ΄ν°λ€ μ¬μ΄μ κ΄κ³λ₯Ό ꡬ쑰ννκ²μ΄ μλ£κ΅¬μ‘°μ΄λ©°, μΆμ μλ£νμ ν΅ν΄μ λ°μ΄ν°λ€μ μ¬μ΄μ κ΄κ³λ₯Ό μ μνκ³ μλ€.
 
(6) Pop/Push μ°μ°μ μ€ν

- 1. CreateStack(3): μ μΌ μ΄κΈ°μνλ‘ 3κ°μ 곡κ°μ κ°μ§λ Stack μ΄ λ§λ€μ΄μ§.
 - 2. Push(stack, 'S'): μ μΌ μ²« λ²μ§Έ μμΉμ 'S' λ°μ΄ν°κ° λ€μ΄κ°κ² λλ€.
 - 3. Push(stack, 'T'): λ λ²μ§Έ μμΉμ λ€μ΄κ°κ² λλ€.
 - 4. Pop(stack): μ μΌ λ§μ§λ§ μμΉ μ¦, topμ μμΉμ μλ 'T' μ κ°μ΄ μμ λλ©΄μ 'T' λ°μ΄ν°λ₯Ό λ°νλ°λλ€.
 - 5. Push(stack, R): ν΄λΉ stack top μ 'R' μ½μ
 - 6. Push(stack, 'P'): 'P' μ½μ ( μ΄ λΆλΆμμ Stack μ 곡κ°μΈ 3μΉΈμ΄ λ€ μ°¨λ²λ¦Ό. )
 - 7. Push(stack, 'Q'): Qλ μ½μ μ΄ λμ§μλλ€. μ΄μ λ, μΆμ μλ£ν μ€κ³ μ¦, ADT μ€κ³μ μν μ μ½μΌλ‘ λ§ν.
 - μ€κ³μμ μμ μ°μλ λ©λͺ¨λ¦¬ 곡κ°μ 미리 ν¬κΈ°λ₯Ό μ ν΄λμΌλ©΄ ν λΉμ΄ ν λ²μ λλλ―λ‘ λ©λͺ¨λ¦¬ κ΄λ¦¬μ ν¨μ¨μ μ΄λΌμ
 - μ€νμ΄ LIFO κ΅¬μ‘°λ‘ λμνλ€λ κ²μ μ νλ μ°μ° κ·μΉμ κ°λ λ»μ΄λ©°, λ§μ½ μ ν μμ΄ κ³μ λμ΄λλ€λ©΄, νλ‘κ·Έλ¨μμ μκΈ°μΉ λͺ»ν λ©λͺ¨λ¦¬ μ¬μ© μ¦κ° μ¦, 무ν μ€νμΌλ‘ μΈν΄ μμ€ν μ΄ λΆμμ ν΄μ§ μ μκΈ° λλ¬Έμ.
 - κ²°κ³Όμ μΌλ‘ Stack μμλ StackIsFull / StackIsEmpty μ κ°μ μ°μ°μ ν΅ν΄ μμ μ±μ ν보νκ³ μμ.
 
(7) StackIsFull / StackIsEmpty μ°μ°

- StackIsFull: μ€νμ΄ λ―Έλ¦¬ μ ν΄μ§ μ΅λ ν¬κΈ°κΉμ§ λ°μ΄ν°λ₯Ό μ±μ΄ μνμμ Push λ₯Ό μλν λ λΆλ¦¬μΈ κ° λ¦¬ν΄
 - StackIsEmpty: μ€νμ λ°μ΄ν°κ° νλλ μλ μνμμ Pop μ΄λ Peek λ₯Ό μλν λ λΆλ¦¬μΈ κ° λ¦¬ν΄
 
β 3. μ€νμ μμ©
(1) μ€νμ λ€μν μμ©
- λ³μμ λν λ©λͺ¨λ¦¬μ ν λΉκ³Ό μμ§μ μν μμ€ν  μ€ν
 - μλΈλ£¨ν΄ νΈμΆ κ΄λ¦¬λ₯Ό μν μ€ν: ν¨μ νΈμΆ μ λ°ν μ£Όμλ₯Ό μ€νμ μ μ₯(push)νκ³ , ν¨μκ° λλλ©΄ μ€νμμ κΊΌλ΄(pop) ν΄λΉ μμΉλ‘ λμκ° μ€νμ μ΄μ΄κ°λ κ΅¬μ‘°κ° Call Stack μ΄λ©°, μ΄μ체μ κ° μ€νμ μν λ©λͺ¨λ¦¬ 곡κ°μ ν λΉμ ν΄μ€λ€.
 - μ°μ°μλ€ κ°μ μ°μ μμμ μν΄ κ³μ° μμκ° κ²°μ λλ μμ κ³μ°
 - μΈν°λ½νΈμ μ²λ¦¬μ λλμκ° λͺ λ Ή μν μ§μ μ μ μ₯νκΈ° μν μ€ν
 - μ»΄νμΌλ¬, μν νΈμΆ κ΄λ¦¬
 
β 4. μ€νμ μ°μ°
- μ€νμ μ°μ° ꡬννλ λ°©λ²μ κ΄ν λ΄μ©μ
 - top: μ€νμμ κ°μ₯ λ§μ§λ§μ μ½μ λ λ°μ΄ν°μ μμΉλ₯Ό κ°λ¦¬ν€λ κ°μ.
 
(1) μ€νμ μμ  μ°μ°

// < --a : μ μ κ°μ >
int a = 5;
int b = --a; // a = 4, b = 4
// < a-- : νμ κ°μ >
int a = 5;
int b = a--; // b = 5, a = 4
- --a (μ μ κ°μ): λ¨Όμ  a μ κ°μ 1 μ€μ΄κ³ κ·Έ λ€μ, μ€μ΄λ κ°μ μμ κ²°κ³Όκ°μΌλ‘ μ¬μ©
 - a-- (νμ κ°μ): λ¨Όμ  νμ¬ a μ κ°μ μμ κ²°κ³Όκ°μΌλ‘ μ¬μ©νλ©° κ·Έ λ€μ, a λ₯Ό 1 μ€μ
 - μ¦, μ°μ°μ νκ³ λ³μμ ν λΉνλλ, μ°μ°μ νμ§ μκ³ κ°λ§ λ³μμ ν λΉνλλμ μ°¨μ΄μ.
 
- 'top--' μμ μ¬μ©λ '--' μ°μ°μμ μμΉμ λ°λΌ μ°μ°μ μ μ©μμκ° λ¬λΌμ§ μ μμ.
 - top--: top κ°μ 1 κ°μμν€λ μ°μ°μ μλ―Έν¨.
 - μ¦, μ€νμμ λ°μ΄ν°λ₯Ό νλ μμ (pop)ν ν, topμ μλλ‘ μ΄λμν€λ κ²μ μλ―Έν¨.
 
[ μ€νμ μμ± μ°μ° ]

[ μ€νμ μμ  μ°μ° ]

[ μ€νμ μ½μ μ°μ° ]

[ μ 리 ]
- μΆμμλ£ν μ¦, μλ£κ΅¬μ‘°κ° μΆμν λ μΈν°νμ΄μ€λ₯Ό ꡬνν λ΄μ©μ΄λΌκ³ λ³Ό μ μμ.
 
β 5. μ¬μΉμ°μ°μμ μ μ, νμ, μ€μ νν
(1) μμμ κ³μ°
- μ°μ°μμ κ³μ° μ°μ μμλ₯Ό μκ°ν΄μΌ ν¨
 - ex) A + B * C + D -> ((A + (B * C)) + D)
 - μ΄λ¬ν μ°μ μμ κ³μ°μ μ¬λμ ν λ²μ λλ μ ν μ μμ§λ§, μ»΄ν¨ν°λ μ 체λ₯Ό λͺ»λ³΄μ§λ§ λ°©λ²μ΄ μμ.
 - μ»΄ν¨ν°λ μΌμͺ½λΆν° μ€λ₯Έμͺ½μΌλ‘ μ λ ₯μ΄ λκΈ° λλ¬Έμ μ°μ μμ νμ μ΄ μ΄λ €μ ( μ€νμ νμ© ν¨ )
 
(2) μμμ νκΈ° λ°©λ²
[ μ€μ νκΈ°λ² (infix notation) ]
- μ°μ°μλ₯Ό νΌμ°μ°μ μ¬μ΄μ νκΈ°νλ λ°©λ²
 - A + B
 - μ¬λμ΄ μ½κ³ μ΄ν΄νκΈ°λ μ½μ§λ§, μ»΄ν¨ν° μ μ₯μμλ μ°μ°μ μ°μ μμμ κ΄νΈ μ²λ¦¬λ₯Ό ν΄μν΄μΌ ν΄μ 볡μ‘ν¨.
 
[ μ μ νκΈ°λ² (prefix notation) ]
- μ°μ°μλ₯Ό νΌμ°μ°μ μμ νκΈ°νλ λ°©λ²
 - +AB
 
[ νμ νκΈ°λ² (postfix notation) ]
- μ°μ°μλ₯Ό νΌμ°μ°μμ λ€μ νκΈ°νλ λ°©λ²
 - AB+ : Aμ Bλ₯Ό λνκ² λ€λ μ°μ°μ
 - κ΄νΈκ° νμ μμ (μ°μ μμκ° νκΈ° λ°©μ μμ μ΄λ―Έ λ°μμ΄ λ¨)
 - μ»΄ν¨ν°κ° μ€νμ μ¬μ©ν΄μ κ³μ°νκΈ° λ§€μ° κ°λ¨ν΄μ§
 
(3) νμ νκΈ°λ²
- μ€μ νκΈ°λ²μ μ°μ μμμ κ΄νΈλ₯Ό ν΄μν΄μΌ ν΄μ 볡μ‘νμ§λ§, νμ νκΈ°λ²μ μ€νλ§μΌλ‘ λ°λ‘ κ³μ°μ΄ κ°λ₯ν¨.
 
// μμ: AB+ (νμ νκΈ°λ²)
// A -> push
stack: [A]
// B -> push
stack: [A, B]
// + -> pop 2κ° κΊΌλ (B, A) -> A + B κ³μ° -> κ²°κ³Ό push
stack: [A+B]
// μ΅μ’
 κ²°κ³Ό: A + B
- κ·Έλμ μ€μ νκΈ°λ²μ νμ νκΈ°λ²μΌλ‘ λ°κΎΈκ² λλ€. μ¦, μ¬λμ΄ μ°κΈ° μ’μ μμμ μ»΄ν¨ν°κ° κ³μ°νκΈ° μ’μ μμμΌλ‘ λ³ν
 

- μ¦, 첫λ²μ§Έ μμμ μ€μ νκΈ°λ² μ΄λ©°, μλλ‘ κ°μλ‘ νμ νκΈ°λ²μΌλ‘ λ³κ²½ ( μ»΄ν¨ν°κ° μμ보기 μ½κ² )
 - B + K λ BK+, /D λλκΈ° μ°μ° λν D/ λ‘ μ€ννμμΌλ‘ μ μ
 
(4) μ€μ νκΈ°μμ νμ νκΈ°μ λ³ν λ°©λ²

- λ¨Όμ  μ€μ νκΈ°μμ μ°μ°μμ μ°μ μμλ₯Ό κ³ λ €νμ¬(νΌμ°μ°μ, μ°μ°μ, νΌμ°μ°μ)μ ννλ‘ κ΄νΈλ‘ λ¬Άμ΄μ€
 - κ° κ³μ°λμΉλ₯Ό λ¬Άκ³ μλ κ΄νΈ μμμ μ°μ°μλ₯Ό κ³μ°λμΉμ κ°μ₯ μ€λ₯Έμͺ½μΌλ‘ μ΄λμν΄
 - κ° κ³μ°λμΉλ₯Ό νλμ νΌμ°μ°μλ‘ κ³ λ €νμ¬ μλ₯Ό λ°λ³΅ν¨
 - κ΄νΈλ₯Ό λͺ¨λ μ κ±°ν¨ ( μ€νμ λ£κ³ 2κ°μ© pop νλ λ°©μ )
 
1. νΌμ°μ°μ(μ«μ, λ³μ) → μ€νμ push
2. μ°μ°μ → μ€νμμ 2κ° pop → κ³μ° → κ²°κ³Όλ₯Ό λ€μ push
3. λκΉμ§ λ€ μ²λ¦¬νλ©΄ → μ€νμ μ΅μ’
 κ²°κ³Ό 1κ°λ§ λ¨μ
- μ¦, νλμ© μ²λ¦¬νλ©΄μ, μ€κ° κ²°κ³Όλ₯Ό κ³μ μ€νμ μμλκ°λ λ°©μμ.
 
[ μ 리 ]
- κ²°κ΅ ν΄λΉ μ€μ νκΈ°μκ³Ό νμ νκΈ°μ λ³ν λ°©λ²μ μ€νμ μμ©μ μ΄λ°κ² μμΈλ€λ κ²μ μλ €μ£ΌκΈ° μν¨μ.
 - κ²°κ΅ μ€μλ νμ νκΈ°μμ κ°λ λ€μ μΈν°ν리ν°λ μ»΄νμΌλ¬μμ μ΄μ©λλ λλ
 
(5) νμ νκΈ°μμ κ³μ° μκ³ λ¦¬μ¦ ( μ€ν μμ© )

- λ°μ΄ν°λ₯Ό λ°μμ μ μ₯ν λ³μ μ μΈ λ° μ΄κΈ°ν κ³Όμ 
 

- λ°λ³΅λ¬Έμ ν΅ν΄μ exp[i] ( νμ νκΈ°μ ) μ κ°λ€μ νλμ© νΌμ°μ°μμΈμ§ 쑰건문μ ν΅ν΄ 체ν¬
 - λ§μ½ νΌμ°μ°μμΈ κ²½μ°μλ push λ₯Ό ν΅ν΄ stack μ κ°μ νλμ© μ±μ
 

- μμ μ‘°κ±΄λ¬Έμ΄ μ΄μ΄μ Έμλ λΆλΆμ΄λ©°, else λ§μ½ μ°μ°μμΈ κ²½μ°μλ μ¦, +-*/ μΈ κ²½μ°μ μ€νλ¨.
 - μ¦, symbol λ³μμ νΌμ°μ°μκ° λ€μ΄κ° μλ κ²½μ°μ else λ¬Έμ΄ μ€ν λ¨.
 - oper2 , oper1 κ° λ³μμ pop() μ ν΅ν΄ stack μμ κ°μ λκ° μ κ±°νλ©΄μ 리ν΄μ λ°μ λ³μμ ν λΉμ ν¨.
 - ν΄λΉ symbol λ³μμ νΌμ°μ°μ
 - switch λ¬Έμ ν΅ν΄ symbol νΌμ°μ°μκ° μ΄λ€κ±΄μ§ νμ ν λ€ μ‘°κ±΄μ λ§κ² μ°μ°μ μνν¨
 - μ΅μ’ μ μΈ return pop(); μ λͺ¨λ λ°λ³΅λ¬Έμ μνν λ€ μμμ λ΄μ©μ΄ λΉμλ€. μ¦, λ°°μ΄μ λͺ¨λ κ°μ λ³Έ κ²½μ°μ ν΄λΉλ¨.
 - κ²°λ‘ μ λͺ¨λ λ°λ³΅λ¬Έμ μννμΌλ, μ΅μ’ κ²°κ³Όκ°μ΄ λμ¨ μνμΌκ±°μ. μ¦, pop() μ ν¨μΌλ‘μ¨ μ΅μ’ κ°μ λ½μμ 리ν΄μ ν΄μ€.
 
[ μ 리 ]
- ν΄λΉ μκ³ λ¦¬μ¦μ C νλ‘κ·Έλλ° μΈμ΄μ μ½λλ‘ κ΅¬νν λ΄μ©μ κΈ°λ°ν¨.
 
'πλ°©μ‘ν΅μ λνκ΅ > π’μλ£κ΅¬μ‘°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [μλ£κ΅¬μ‘°] 6κ° - μ°κ²° 리μ€νΈμ μμ© (0) | 2025.10.06 | 
|---|---|
| [μλ£κ΅¬μ‘°] 5κ° - μ°κ²° 리μ€νΈ (0) | 2025.09.04 | 
| [μλ£κ΅¬μ‘°] 4κ° - ν (0) | 2025.09.02 | 
| [μλ£κ΅¬μ‘°] 2κ° - λ°°μ΄ (3) | 2025.08.22 | 
| [μλ£κ΅¬μ‘°] 1κ° - μλ£κ΅¬μ‘°λ 무μμΈκ°? (1) | 2025.08.21 |