π¦ μ€ν(Stack)
μ€ν(Stack)μ λ°μ΄ν°λ₯Ό νμͺ½ λ°©ν₯μΌλ‘λ§ λ£κ³ κΊΌλ΄λ μλ£κ΅¬μ‘°μ λλ€. νμ μ μΆ(LIFO, Last In First Out)λ°©μμΌλ‘ λμνμ¬ κ°μ₯ λ§μ§λ§μ λ€μ΄μ¨ λ°μ΄ν°κ° κ°μ₯ λ¨Όμ λκ°λ ꡬ쑰μ λλ€.
μλ₯Όλ€μ΄, μ μλ₯Ό μμλκ³ μμμλΆν° νλμ© μ¬μ©νλ κ²κ³Ό κ°μ΅λλ€.

μ€νμ ν΅μ¬μ “μμλλ‘ λ°μ΄ν°λ₯Ό λ£κ³ , λ§μ§λ§ λ°μ΄ν°λ₯Ό μμ νλ€.” μ΄λ©°, ν΅μ¬μ μ΄ν΄νλ €λ©΄ μ€νμ΄ λμνλ κ³Όμ μ μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΅λλ€.
π λμ λ°©μ
1. λ°μ΄ν° μΆκ°(push)
- μμμλΆν° μμλλ‘ λ°μ΄ν°λ₯Ό μΆκ°ν©λλ€.

2. λ°μ΄ν° μ κ±°(pop)
- κ°μ₯ λ§μ§λ§ λ°μ΄ν°λ₯Ό μ κ±°ν©λλ€.

3. μ€νμ κ°μ₯ λ§μ§λ§ λ°μ΄ν° νμΈ
- λ§μ§λ§μ μλ λ°μ΄ν°λ₯Ό νμΈν©λλ€.

4. μ€νμ΄ λΉμ΄μλμ§ νμΈ
- μ€νμ΄ λΉμ΄μλμ§ νμΈνλ λ°©λ²μ μ€νμ κΈΈμ΄κ° 0λ³΄λ€ ν°κ°λ₯Ό λΉκ΅ν©λλ€.

JavaScript μ½λ μμ
JavaScriptλ₯Ό μ΄μ©νμ¬ μ€ν(Stack)μ ꡬννλ©΄ λ€μκ³Ό κ°μ΄ ꡬνν μ μμ΅λλ€.
ꡬνμ μμ΄μλ μμ μκ°λλ¦° κΈ°λ₯μ κ°μ§κ³ μλ classλ₯Ό ꡬννμ¬ νλμ κ°μ²΄λ‘ νννμμ΅λλ€.
(ν¨μ νΉμ μ΄μΈμ λ°©μμΌλ‘ ꡬνν΄λ 무방ν©λλ€.)
Stack ν΄λμ€ κΈ°λ₯
- push: λ°μ΄ν° μΆκ°
- pop: λ§μ§λ§ λ°μ΄ν° μ κ±°
- peek: κ°μ₯ λ§μ§λ§ λ°μ΄ν° νμΈ
- isEmpty: μ€νμ΄ λΉμ΄μλμ§ νμΈ
μ½λ
class Stack {
constructor() {
// stackμΌλ‘ μ¬μ©ν λ°°μ΄
this.array = [];
}
// push κΈ°λ₯
push(element) {
this.array.push(element);
}
// pop κΈ°λ₯
pop() {
if (this.isEmpty()) throw new Error("μ€νμ΄ λΉμ΄μμ΅λλ€");
return this.array.pop();
}
// peek κΈ°λ₯
peek() {
if (this.isEmpty()) throw new Error("μ€νμ΄ λΉμ΄μμ΅λλ€");
return this.array.at(-1); // μ΅μ λ¬Έλ²μΌλ‘ λ§μ½ μ€λ₯κ° λλ€λ©΄ this.array[this.array.length - 1]μΌλ‘ μ¬μ©ν΄μ£ΌμΈμ.
}
isEmpty() {
return this.array.length === 0;
}
}
// μ¬μ© μμ
const stack = new Stack();
stack.push(1);
stack.push(2);
console.log(stack.peek()); // 2
console.log(stack.pop()); // 2
console.log(stack.pop()); // 1
console.log(stack.isEmpty()); // true
- Array.prototype.at()Array.prototype.at() - JavaScript | MDN
- at() λ©μλλ μ μ«κ°μ λ°μ ν΄λΉ μΈλ±μ€μ μλ νλͺ©μ λ°ννλ©°, μμμ μμλ₯Ό μ¬μ©ν μ μμ΅λλ€. μμ μ μλ λ°°μ΄μ λ§μ§λ§ νλͺ©λΆν° μ λλ€.
Array.prototype.at() - JavaScript | MDN
μ£Όμ΄μ§ μΈλ±μ€μ μΌμΉνλ λ°°μ΄μ μμμ λλ€. index < -array.length λλ index >= array.lengthμΈ κ²½μ°, ν΄λΉ μμ±μ μ κ·Όνμ§ μκ³ νμ undefinedλ₯Ό λ°νν©λλ€. μΈλ±μ€κ° μμκ° μλλΌλ©΄, at() λ©μλλ
developer.mozilla.org
π κ΄λ ¨ λ¬Έμ
νλ‘κ·Έλλ¨Έμ€
SWκ°λ°μλ₯Ό μν νκ°, κ΅μ‘μ Total Solutionμ μ 곡νλ κ°λ°μ μ±μ₯μ μν λ² μ΄μ€μΊ ν
programmers.co.kr
'Algorithm > κ°λ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [μκ³ λ¦¬μ¦] λμ ν©(Prefix Sum) (0) | 2024.04.02 |
|---|---|
| [μκ³ λ¦¬μ¦] μ°μ μμ νμ ν(Priority Queue & Heap) (0) | 2024.03.12 |
| [μλ£κ΅¬μ‘°] ν(Queue) (0) | 2024.03.12 |
| [μκ³ λ¦¬μ¦] λ¬Έμμ΄ - νΈλΌμ΄(Trie) (0) | 2024.02.04 |
| ν¬λ£¨μ€μΉΌ(Kruskal) - μ΅μ μ μ₯ νΈλ¦¬(MST) (1) | 2024.01.10 |