코드스테이츠(stack, queue)

유승현·2021년 4월 14일
0
post-thumbnail

오늘은 약간 재미있고 간단한? stack과 queue를 배웠다.
레슨을 들을땐 너무 간단한 개념이라 생각하고 이해를 빨리했다 생각했는데 관련 코플릿 문제를 본 순간
역시..여윽시....그럴리 없지...
자! 정리해보자!

stack이란

많은 예시들이 있지만 택배상하차 예시가 가장 와닿았다..입구가 하나밖에 없는 통에 순서대로들어갔다가 반대로 나오는 개념이다. 여기까지는 이해할수있는데 이걸 문법으로 풀어서 사용하는 예시는 인터넷 페이지의 뒤로가기, 앞으로가기 개념이 있다!

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

  size() {
    return this.top;
  }

	// 스택에 데이터를 추가 할 수 있어야 합니다.
  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;
  }
}

전 시간에 배운 class와 연관지어서 개념을 익혀야 한다
여기서 size를 구하는 방법이 두가지 방법을 찾았는데 배열의 렝스를 Object 메소드를 활용해서 구하는 방법과 this.top을 설정하는 방법.

그리고 stack을 사용하며 느낀점은 생각보다 수동적인 방법으로 문제를 풀었다 뒤로가기를 눌렸을땐 현재 페이지를 뒤로가기 저장소에 pop하고 그값을 현재에 할당하고 미래에 현재값을 할당한다 앞으로가기를 누르면 반대로 앞으로가기 저장소에 pop하고 한값을 현재에 할당하고 뒤로가기저장소에 push한다

Queue란

Queue란 편의점의 음료수칸처럼 들어가는 순서대로 나온다 이걸 문법적으로 풀면

class Queue {
  constructor() {
    this.storage = {};
    this.front = 0;
    this.rear = 0;
  }

  size() {
    return Object.keys(this.storage).length
  }
	
	// 큐에 데이터를 추가 할 수 있어야 합니다.
  enqueue(element) {
    this.storage[this.rear] = element;
    this.rear += 1;
  }
	
	// 가장 먼저 추가된 데이터가 가장 먼저 추출되어야 합니다.
  dequeue() {
    // 빈 큐에 dequeue 연산을 적용해도 에러가 발생하지 않아야 합니다
    if (this.size() === 0) {
      return;
    }

    const result = this.storage[this.front];
    delete this.storage[this.front];
    this.front += 1;

    return result;
  }
}

stack이랑 비슷한데 일단 사이즈를 구해주고(위에 말한 Object의 방법으로) 뒤에다가 추가하고 앞으로 나오는 방법?이다 하.. 말로표현하기가 참 이게 내가 보면 이해를햇는데 근데 참 애매한게 나만의 언어로 정리한다는게 나만알게 표현하라는게 이런게 아닐텐데..계속 쓰면 더 자세하게 설명할수있겠지? 나중에 초반에쓴 포스트를 보면 와 이따구로 개념정리를 해놨구나 하며 초등학교때쓴 일기를 보는 마음이 들정도로 나중엔 더욱 잘 쓰겠지?

개념정리를 하고 코플릿을 풀었는데 3번 동화책을 풀땐 1시간딱맞게 풀어서 나는 기뻣다 오랜만에 코드의 1줄부터 마지막줄까지 다 이해를 하고 작성을해서.... 근대 4번은 개념은 아는데 문법작성이 너무어렵다 주석으로 정리를하면 오~그럴싸한데? 이러면서 코드를 작성하면 '다다다다'치다가도 어? 이러면 이렇게 이렇게 설정을 바꿔야되고 제약을 줘야겠네? 하면서 중간에 주석을 수정하고 고민하고 어떻게 어떻게 완성을하면 두세개가 안넘어간다..그럼 그때 제일 힘들다 처음부터 '다다다다'써서 '짠!'하고 완성하면 희열이 몰려오지만 이거안되서 이거 고치고 저거 고치고 살붙이고 떼고 그러면 예전에 코드 선생님들이 제일안좋은 코딩이라고 했던거같아서..마음이 불안하다 시간을 조금만 더 주세요 정말 할 수 있을것같습니다 제가 가망도없는건 빨리 다른 쪽으로 돌리는 성향이 있는데 이건 뭔가 시간만 있다면 조금만 하면 될꺼같아서 그렇습니다..조그만 시간을 주세요ㅜ

profile
멋진 사람이 되고 싶습니다.

0개의 댓글