자료구조

Javascript 자료구조 1. 스택(stack) 활용

developerYoung 2023. 6. 17. 23:28
반응형

이번엔 지난 시간에 직접 구현한 stack을 활용하여 아래 문제를 풀어볼게요!

 

https://school.programmers.co.kr/learn/courses/30/lessons/12906 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

굳이 ... 구현해서 안풀어도 되지만 ㅠㅠㅠ 구현 공부할겸 .. 해보도록 하죠...!

 

class Stack {
  #list = [];
  #index = -1;
  push(val) {
    this.#list[++this.#index] = val;
  }
  pop() {
    if (this.#index === -1) throw new Error('Element does not exist.');
    return this.#list[this.#index--];
  }
  size() {
    return this.#index + 1;
  }
  getStack() {
    let stack = [];
    for (let i = 0; i <= this.#index; i++) {
      stack[i] = this.#list[i];
    }
    return stack;
  }
  getTail() {
    if (this.#index === -1) return null;
    return this.#list[this.#index];
  }
}

function solution(arr) {
    const stack = new Stack();
    for (let i = 0; i < arr.length; i++) {
        if (stack.getTail() !== arr[i]) {
            stack.push(arr[i]);
        }
    }
    return stack.getStack();
}

 

stack 구현에 대한 내용은 블로그 링크에 있습니다!

https://youngari.tistory.com/entry/Javascript-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-1-%EC%8A%A4%ED%83%9Dstack

 

 

 
구현한 Stack의 문제점 및 고민

직접 구현을 통해 효율성 문제로 시간을 보니, 기본 javascript list를 console하는 것과 getStack()을 통해 console하는 부분에서 속도의 이슈가 있어요.

 

지난 번 글에서도 getStack()에서 문제가 있을 느낌이 있었지만, 정말로 문제가 있는 것을 보니... 아무래도 getStack을 하기 위한 방법을 좀 더 고민할 필요가 생겼어요..

 

알아봤지만.. 그냥 list 자체를 반환해야하는 경우엔 list를 통해 구현하는게 낫겠다 라는 생각을 했네요ㅠㅠ

 

수정하여 다시 찾아오도록 할게요...! ㅎㅎㅎ

 

반응형