Stack 이란?
Stack은 위 사진을 보면 직관적으로 알 수 있다. 가장 나중에 들어온 데이터가 가장 먼저 나가는 구조이다.
즉, 후입선출 LIFO(Last In First Out)이라고 많이 불린다.
Stack 구현
class Stack {
constructor() {
this.storage = {};
this.top = 0; // 스택의 가장 상단을 가리킨다.
}
// stack 현재 데이터의 크기를 리턴
size() {
return this.top;
}
// push 구현
push(element) {
this.storage[this.top] = element;
this.top += 1;
}
// pop 구현
pop() {
if (this.size() <= 0) {
return;
}
const result = this.storage[this.top-1];
delete this.storage[this.top-1];
this.top -= 1;
return result;
}
}
const stack = new Stack();
Queue 란?
queue는 먼저 들어온 데이터가 먼저 반환되는 자료구조이다.
선입선출 FIFO(First In First Out) 이라고 많이 불린다.
자료(data)를 주고 받을 때 속도의 차이나 시간 차이를 극복하기 위한 임시 기억 장치로 Queue가 사용된다.
Queue 구현
class Queue {
constructor() {
this.storage = {}
this.front = 0;
this.back = 0;
}
// queue의 현재 데이터 크기를 리턴
size() {
return this.back - this.front;
}
enqueue(element) {
this.storage[this.back] = element;
this.back += 1;
}
dequeue() {
if (this.size() <= 0) {
return;
}
const result = this.storage[this.front]
this.storage[this.front];
this.front += 1;
return result;
}
}
평소에 프로그래머스로 알고리즘을 풀면서 많이 접했던 스택과 큐가 스프린트 과제로 주어져서 매우매우 반가웠다!! 그래서 그런지 문제들을 금방 해결할 수 있었다.
평소에 알고리즘을 조금씩이라도 풀었던 것이 이번 과제에서 많은 도움이 되었다 ㅠㅠ
하지만 기쁨도 잠시…. 내일은 그래프와 트리, 이진탐색이다…. 이 부분은 어려워서 공부를 안해본 상태라서 걱정이 크다… 오늘 미리 예습을 해놓고 내일 문제를 어떻게든 해결해 봐야겠다.
👊 내일의 TIW(today I Will)
Graph, Tree, Binary Search Algorithm