스택의 대표적인 예 - 스택 메모리 : 함수 호출 시 생성되는 지역변수, 매개변수가 저장되는 메모리 영역이다.
스택은 배열과 연결리스트로 표현할 수 있다. 자바스크립트의 Array는 엄밀히 따지면 배열이라고는 할 수 없어서 컴파일 언어보다는 성능이 떨어질 수 있다.
rear
(맨 뒤 인덱스를 저장하는 변수)와 front
(맨 앞 인덱스를 저장하는 변수)가 무한히 커질 수 있다는 점을 고려해서 사용하자.코딩 테스트에서 큐를 사용하는 문제에 자바스크립트의
Array
를 사용할 경우,shift()
연산이O(n)
이 걸린다는 것을 유념해야 한다. 문제 입력이 1000 이상이 될 경우 성능에 영향을 끼칠 수 있다고 한다. 이런 경우에는 연결 리스트나 배열을 통해 Queue를 구현해 사용할 것을 추천한다.
큐를 배열로 구현하는 과정에서 새롭게
delete
keyword를 알게 되었는데length
를 건드리는 건가하고 헷갈렸다. 실제 확인해보니 쉽게 말하면 배열의 원소를undefiend
(empty)로 할당하고 length는 건드리지 않는 기능이었다.const arr = [1, 2, 3, 4]; delete arr[0]; console.log(arr) // [undefined, 2, 3, 4]
프로그래머스 프론트엔드 데브코스 Day3 [강의] 스택, 큐