사용한 개념
스택은 후입선출로 나중에 들어간 것이 먼저 나온다는 개념을 갖고있는 자료구조다.
실생활로 비교해보면 "프링글스", "회전초밥집에서 초밥접시" "돌탑" 등 쌓은 것을 빼고자 할때 가장 나중에 쌓은 물건을 가장 빨리 빼야한다. 그 개념을 생각하면서 스택 코드를 보면 알 수 있다.
멤버 변수
메서드
사용 예시
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;
}
}
사용한 개념
스택은 후입선출로 나중에 들어간 것이 먼저 나온다는 개념을 갖고있는 자료구조다.
실생활로 비교해보면 "프링글스", "회전초밥집에서 초밥접시" "돌탑" 등 쌓은 것을 빼고자 할때 가장 나중에 쌓은 물건을 가장 빨리 빼야한다. 그 개념을 생각하면서 스택 코드를 보면 알 수 있다.
[Stack] Browser 뒤로가기/앞으로가기 (0) | 2022.12.14 |
---|---|
Javascript Implementation Queue (0) | 2022.12.14 |
Javascript 재귀 함수문제(8) - flattenArr (0) | 2022.12.11 |
Javascript 재귀 함수문제(7) - findMatryoshka (0) | 2022.12.11 |
Javascript 재귀 함수문제(6) - reverseArr (0) | 2022.12.11 |