상세 컨텐츠

본문 제목

Javascript Implementation Stack

Programming Language/JavaScript

by Yongari 2022. 12. 12. 00:00

본문

 





사용한 개념

스택은 후입선출로 나중에 들어간 것이 먼저 나온다는 개념을 갖고있는 자료구조다. 

실생활로 비교해보면 "프링글스", "회전초밥집에서 초밥접시" "돌탑" 등 쌓은 것을 빼고자 할때 가장 나중에 쌓은 물건을 가장 빨리 빼야한다. 그 개념을 생각하면서 스택 코드를 보면 알 수 있다.





멤버 변수

  • 데이터를 저장할 Object 타입의 storage
  • 마지막에 들어온 데이터를 가리키는 Number 타입의 포인터 top

메서드

  • size(): 스택에 추가된 데이터의 크기를 리턴해야 합니다.
  • push(): 스택에 데이터를 추가할 수 있어야 합니다.
  • pop(): 가장 나중에 추가된 데이터를 스택에서 삭제하고 삭제한 데이터를 리턴해야 합니다.

 

 

사용 예시

const stack = new Stack();

stack.size(); // 0
for(let i = 1; i < 10; i++) {
  	stack.push(i);
}
stack.pop(); // 9
stack.pop(); // 8
stack.size(); // 7
stack.push(8);
stack.size(); // 8

 

 

 

풀이코드 설명

class Stack {
  constructor() {
    this.storage = {}; //storage 초기화 
    this.top = 0; // 스택의 가장 상단을 가리키는 포인터 변수를 초기화 합니다.
  }

  size() {
    return this.top; //size를 반환
  }

  //스택의 포인터변수 위치에 엘리먼트 지정
  // 엘리먼트 추가시 인덱스? 포인터 변수값도 추가
  push(element) {
    this.storage[this.top] = element;
    this.top += 1;  
  }
	
  // 가장 나중에 추가된 데이터가 가장 먼저 추출되어야 함
  // 후입선출, 사이즈를 체크한 후 0이하면 return
  // 스토리지 인덱스, 포인터변수에서 -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;
  }
}

 

 

사용한 개념

스택은 후입선출로 나중에 들어간 것이 먼저 나온다는 개념을 갖고있는 자료구조다. 

실생활로 비교해보면 "프링글스", "회전초밥집에서 초밥접시" "돌탑" 등 쌓은 것을 빼고자 할때 가장 나중에 쌓은 물건을 가장 빨리 빼야한다. 그 개념을 생각하면서 스택 코드를 보면 알 수 있다.

 

 

 

 

관련글 더보기