μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- λΈλ‘κ·Έ
- fetch API
- REACT
- useRef
- Gatsby
- μκ³ λ¦¬μ¦
- CSS
- Props
- float
- Flex
- history api
- μ½λ©ν μ€νΈ
- νλ‘ νΈμλ
- useEffect
- μλ°μ€ν¬λ¦½νΈ
- λ°λΈμ½μ€3κΈ°
- position
- λ°λΈμ½μ€
- νλ‘κ·Έλλ¨Έμ€
- Today
- Total
Daehyunii's Dev-blog
15 μ€ν & ν λ³Έλ¬Έ
15 μ€ν & ν
Daehyunii 2022. 8. 14. 15:5415.1 μ€ν(Stack)
μ€νμ΄λ νμ μ μΆ μμΉμ λ°λ₯΄λ λ°μ΄ν° ꡬ쑰λ₯Ό μΌμ»«λ λ§μ΄λ€. μ¦, λμ€μ λ€μ΄μ¨ λ°μ΄ν°κ° λ¨Όμ μ κ±°λλ λ°©μμ μλ£ κ΅¬μ‘°λ₯Ό μ€νμ΄λΌκ³ λ§νλ€. μ€κ±°μ§λ₯Ό νκΈ° μν΄ μ±ν¬λμ μμΈ κ·Έλ¦ μ€ κ°μ₯μμ μλ κ·Έλ¦μ νλμ© μ€κ±°μ§ν΄ λκ°λ€κ³ μκ°νλ©΄ μ½λ€. μ€νμ μ½λ©νλ λ°©λ²μ μ¬λ¬κ°μ§κ° μκ³ μ°κ²° 리μ€νΈλ₯Ό μ¬μ©ν΄μ ꡬνν μλ μλ€. μ¦, μ€νμ΄λΌλ κ°λ μ νμ μ μΆ μμΉμ μ§ν€λ μλ£ κ΅¬μ‘°λ€μ λ§νλ μΆμμ μΈ κ°λ μ΄λ€.
15.2 λ°°μ΄λ‘ μ€ν ꡬννκΈ°
λ°°μ΄μ λ§λ€κ³ ν΄λΉ λ°°μ΄μ λ°μ΄ν°λ₯Ό μΆκ°ν λ push() λ©μλλ₯Ό νμ©νκ³ , μ κ±°ν λ pop() λ©μλλ§μ μ¬μ©νκ±°λ shift(), unshift() λ©μλλ§μ μ¬μ©νλ€λ©΄ λ°°μ΄μ μ€νμΌλ‘ μ¬μ©νλ λ°©λ²μ΄ λλ€. νμ μ μΆ μμΉμ μ§ν€κ³ μκΈ° λλ¬Έμ΄λ€. λ€λ§ λ°°μ΄μ μ€νμΌλ‘ νμ©νλ κ²½μ°μλ push(),pop() λ©μλλ₯Ό νμ©νλκ²μ΄ λ μ’λ€.(μΈλ±μ€ λλ¬Έμ)
var stack = [];
stack.push('a');
stack.push('b');
stack.push('c');
console.log(stack.pop()); // c
console.log(stack.pop()); // b
console.log(stack.pop()); // a
15.3 λ¨μΌ μ°κ²° 리μ€νΈλ‘ μ€ν ꡬννκΈ°
μ€νμ νμ μ μΆ κ΅¬μ‘° μμΉμ μ§ν€λ©΄ λκΈ° λλ¬Έμ λ¨μΌ μ°κ²° 리μ€νΈλ‘λ μ€νμ ꡬνν μ μλ€. λ€λ§, λ¨μΌ μ°κ²° 리μ€νΈλ₯Ό μ€νμΌλ‘ ꡬννκΈ° μν΄μλ λ°°μ΄κ³Ό λ€λ₯΄κ² shift(), unshift()λ‘ κ΅¬ννλκ²μ΄ μ’λ€. λ¨μΌ μ°κ²° 리μ€νΈλ μΈλ±μ€κ° μκΈ° λλ¬Έμ λ§μ§λ§μ λ Έλλ₯Ό μ κ±°νκΈ° μν΄μλ ν μΌ λ Έλμ μ§μ λ Έλλ₯Ό μ°ΎκΈ°μν΄ ν€λ λ ΈλλΆν° μμν΄μ μ°Ύμκ°μΌ νλ―λ‘ O(N) μκ° λ³΅μ‘λλ₯Ό κ°κ² λλ―λ‘ μ°κ²° 리μ€νΈμ 맨 μμ λ Έλλ₯Ό μΆκ°νκ³ μ κ±°νλ λ°©μμΌλ‘ μ€νμ ꡬννλ κ²μ΄ λ ν¨μ¨μ μ΄λ€.
class Stack {
constructor(){
this.first = null;
this.last = null;
this.size = 0;
}
unshift(val){ // 맨 μμ λ
Έλ μΆκ°
var newNode = new Node(val);
if(!this.first){
this.first = newNode;
this.last = newNode;
} else {
var temp = this.first;
this.first = newNode;
this.first.next = temp;
}
return ++this.size;
}
shift(){ // 맨 μμ λ
Έλ μΆκ°
if(!this.first) return null; //λ
Έλκ° μλμ§ νμΈ
var temp = this.first;
if(this.first === this.last){ //λ
Έλκ° νλμΈμ§ νμΈ
this.last = null;
}
this.first = this.first.next; //κ°μ΄ νλλΌλ©΄ μ μ΄μ nextλ nullμ΄λ―λ‘
// μμμλ λ
Έλκ° νλμΈμ§ νμΈνλ κ³Όμ μμλ lastλ§ λ°κΏμ£Όλ©΄ λ¨
this.size--;
return temp.value;
}
}
15.4 ν(Queue)
νλ μ€νκ³Ό λ§μ°¬κ°μ§λ‘ λ°μ΄ν° ꡬ쑰λ‘μ λ°μ΄ν°λ₯Ό μΆκ°νκ³ μ κ±°νλ€. κ·Έλ μ§λ§ μ€νκ³Όλ λ€λ₯΄κ² μ μ μ μΆ λ°©μμ΄λ€. μ¦, λ¨Όμ λ€μ΄κ° κ²μ΄ λ¨Όμ λκ² λλ€. μλ²λλ μ μ₯μ μν΄ μ€ μ μλκ²μ μκ°νλ©΄ μ΄ν΄νκΈ° μ½λ€. μ€νκ³Ό λ§μ°¬κ°μ§λ‘ λ°°μ΄μ μ΄μ©ν΄μ νλ₯Ό ꡬνν μ μκ³ λλ μ체μ μΌλ‘ νλ₯Ό ꡬνν μλ μλ€. νμμλ λ³΄ν΅ λ°μ΄ν°λ₯Ό μΆκ°νκΈ° μν΄ μ¬μ©λλ ν€μλλ₯Ό enqueue, λ°μ΄ν°λ₯Ό μ κ±°νκΈ° μν΄ μ¬μ©νλ ν€μλλ₯Ό dequeueλΌκ³ νλ€.
β»λ°°μ΄μ λ©μλλ₯Ό μ΄μ©νμ¬ μ€ν&ν ꡬν μ 리
μ€ν(νμ μ μΆ) | ν(μ μ μ μΆ) |
push() & pop() | push() & shift() |
shift() & unshift() | unshift() & pop() |
15.5 λ¨μΌ μ°κ²° 리μ€νΈλ‘ ν μμ±νκΈ°
λ¨μΌ μ°κ²° 리μ€νΈλ‘ νλ₯Ό ꡬννλ €λ©΄ λ°°μ΄μ push() & shift() λ©μλμ²λΌ κΈ°λ₯μ ꡬννλκ²μ΄ μ’λ€. μλνλ©΄ λ¨μΌ μ°κ²° 리μ€νΈμ κ²½μ° λ€μμ μ κ±°λ₯Ό νλ €λ©΄ ν€λ λ ΈλλΆν° νκ³ λ€μ΄κ°μΌ νλ―λ‘ μκ°μ΄ μ€λ 걸리기 λλ¬Έμ΄λ€. νλ μμ² ν° λ°μ΄ν°λ₯Ό κ°μ§λλΌλ μκ΄μλ€. μΈλ±μ€κ° μμΌλ―λ‘ λͺ¨λ λͺ λ Ήμ΄ μμκ°μ κ°μ§κ² λλ―λ‘ μ ν λ¬Έμ κ° μλ€. κ°μ₯ λ€μ λ£κ³ , κ°μ₯ μμμ μ κ±°νλ―λ‘ λ°°μ΄μ΄ κΈΈμ΄μ Έλ νμ O(1) μκ° λ³΅μ‘λλ₯Ό κ°λλ€. μ€νκ³Όμ μ°¨μ΄λ νμ μ μΆμ΄λ μ μ μ μΆμ΄λμ μ°¨μ΄μ΄κ³ μ½λ ꡬν λ°©μμ κ±°μ λμΌνλ€.
class Node {
constructor(value){
this.value = value;
this.next = null;
}
}
class Queue {
constructor(){
this.first = null;
this.last = null;
this.size = 0;
}
enqueue(val){ //push μν μ ν¨
var newNode = new Node(val);
if(!this.first){
this.first = newNode;
this.last = newNode;
} else {
this.last.next = newNode;
this.last = newNode;
}
return ++this.size;
}
dequeue(){ //shift μν μ ν¨
if(!this.first) return null; // λ
Έλκ° μλ κ²½μ° νμΈ
var temp = this.first;
if(this.first === this.last) { // λ
Έλκ° νκ°μΈ κ²½μ° νμΈ
this.last = null;
}
this.first = this.first.next;
this.size--;
return temp.value;
}
}
'π Language & CS knowledge > Algorithm & Data structure' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
17 νΈλ¦¬ μν (0) | 2022.08.16 |
---|---|
16 μ΄μ§ κ²μ νΈλ¦¬ (0) | 2022.08.14 |
14 μ΄μ€ μ°κ²° 리μ€νΈ (0) | 2022.08.13 |
13 λ¨μΌ μ°κ²° 리μ€νΈ (0) | 2022.08.12 |
11 ν΅ μ λ ¬ (0) | 2022.08.08 |