소프트웨어의 꽃 아닌가.... 자료 구조... 이 공부가 끝나진 않겠지만....
그래도 그래프랑 트리할때 까진 내 몸이 무사하길....
👻👻👻
설명 끝이다ㅎ
은 오바니까 조금 설명을 붙여보면, 일단 stack은 마지막에 삽입된 항목이 가장 먼저 제거되는 후입선출 (LIFO, Last In First Out) 방식으로, 마지막에 삽입된 항목만 접근 및 제거가 가능하다.
자바스크립트 배열에서는 push()와 pop() 메소드를 이용하여 스택을 구현할 수 있지만, 나는 배열 메소드를 사용하지 않고 직접 구현했으니 아래에 첨부하겠다!
Source Code
class Stack { constructor() { this.storage = {}; this.top = 0; } size() { return this.top; } push(...element) { for (let el of element) { this.top++; this.storage[`${this.top}`] = el; } } pop() { if(this.top === 0){ return; } let output = this.storage[`${this.top}`]; delete this.storage[`${this.top}`]; this.top--; return output; } }
먼저 삽입된 항목이 가장 먼저 제거되는 선입선출 (FIFO, First In First Out) 방식으로, 첫번째 삽입된 항목만 접근 및 제거할 수 있다.
큐에 항목을 추가하는 것을 enqueue, 항목을 제거하는 것을 dequeue라고 하며, 자바스크립트 배열에서 push()와 shift() 메소드를 이용하여 큐를 구현할 수 있지만, 역시나 나는 이를 사용하지 않고 구현했다. (자랑하는게 아니다...누구나 할 수 있는...ㅠㅠ)
Source Code
class Queue { constructor() { this.storage = {}; this.front = 0; this.rear = 0; } size() { return this.rear - this.front; } enqueue(...element) { for (let el of element) { this.storage[`${this.rear}`] = el; this.rear++; } } dequeue() { if (this.front >= this.rear) { return; } else { let output = this.storage[`${this.front}`]; delete this.storage[`${this.front}`]; this.front++; return output; } } }
빼먹은 얘기가 있는데, 시간 복잡도 이야기를 안했다. 시간 복잡도는 필히 꼭 알아두도록 하자 나의 모교 항공대에 계신 항공대의 어머니, 한정희 교수님께서 매번, 매순간 강조하신 시간 복잡도... 이번에 자료구조를 할때는 시간 복잡도에 대해서 꼭 이해하도록 하자.
시간 복잡도가 왜 있겠는가...말 그대로 시간이 얼마나 오래걸리는지 알아보고, 줄이기 위해서 나온 개념이지 않을까 혼자 추측해 본다...우리의 일상 곳곳에서 매우 효과적인 자료구조가 쓰여, 빠른 시간안에 우리가 원하는 요청을 보여주는 것을 보면 시간 복잡도는 상품성에도 직접적으로 관련이 있다.
왜 매번 블로깅을 끝낼 때 쯤에는 할 것이 생기는 걸까...공부는 정말 끝이 없나보다...😭
이 글을 보는 사람들도 초심을 잃지 않고 같이 화이팅하길 바란다!
와우... 이 그림이 너무 이해가 폭폭 잘되는데요! 멋있어요!