som-syom / TIL

Today I Learned
0 stars 0 forks source link

2021-12-21 : 알고리즘 #14

Open som-syom opened 2 years ago

som-syom commented 2 years ago

JavaScript로 알고리즘 공부를 하기로 했는데 막상 백준에서 문제를 풀려고하니 JavaScript 로 나와있지는 않고, node.js 를 선택하거나 TypeScript 를 이용하여야 했다. 이래서 프로그래머스를 이용하나보다.

또한 표준 입출력을 받기도 까다로워 우선 그 부분부터 정리를 하였다 https://dasom-hyeon.notion.site/dfb388fcc08c46919557a2fdbe1aef43

그래도 JavaScript 문법에 익숙해지기 위해 직접 자료구조를 구현해보거나 했는데 스택,큐,덱은 배열로 한방에 처리 할 수 있는것으로 보인다.

아래는 JavaScript 로 덱을 구현한 클래스이다

class Deque {
  constructor() {
    this.arr = [];
  }
  push_front(item) {
    this.arr.unshift(item);
  }
  push_back(item) {
    this.arr.push(item);
  }
  pop_front() {
    if (this.arr.length === 0) {
      return null;
    } else {
      this.arr.shift();
    }
  }
  pop_back() {
    if (this.arr.length === 0) {
      return null;
    } else {
      this.arr.pop();
    }
  }
  size() {
    // size 대신 length 써도되긴함
    return this.size;
  }
  empty() {
    if (this.arr.length === 0) return true;
    return false;
  }
  front() {
    return this.arr[0];
  }
  back() {
    return this.arr[this.arr.length - 1];
  }
}

하지만 문제는 따로 있었으니... JavaScript의 console.log 로 출력하는게 꽤나 시간을 잡아먹어 시간초과가 난다는 점이다. 다른 코드들을 참고해보니 대부분 문자열로 저장해둔 다음에 마지막에 한번에 출력하는 코드들인걸 확인하고 그렇게 수정하니 해결이 되긴 했다. 하지만 그래도 조금 번거로운 느낌이 든다.