일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 세그먼트 트리
- 프론트엔드
- three.js
- 회고
- 수학
- State
- poiemaweb
- 코딩일기
- 티스토리챌린지
- 기본 문법
- 해시를 사용한 집합과 맵
- 브루트포스
- JavaScript
- 토이 프로젝트
- 시뮬레이션
- js
- react-three/fiber
- 자료 구조
- styled-components
- 구현
- 모던 자바스크립트 튜토리얼
- 자바
- 엔트리포인트
- HTML5
- Next.js
- 개발 회고
- 자바스크립트
- 오블완
- REACT
- 백준
- Today
- Total
코딩하는 고릴라
[Algorithm] 큐 구현(Javascript) 본문
1. Queue 클래스 선언 및 생성자
Line 1: Queue라는 이름으로 클래스를 선언
Line 2 : 생성자를 이용해 기본 구조 설정
Line 3 : Queue 내부에 값을 저장할 객체를 선언
- 배열이 아니라 객체를 선언한 이유는 메모리 낭비를 방지하기 위함입니다.
- 후에 구현하게 될 push, poll의 방법으로는 push와 poll을 반복하다보면 배열의 앞부분에 값이 남아있지만 접근할 방법이 사라져 해당 메모리 공간이 낭비되기 때문에 객체로 선언해 이를 보완했습니다.
Line 4 : Queue의 앞부분
Line 5 : Queue의 끝부분
2. isEmpty() 구현
Line 2 : rear와 front의 값이 일치하면 이는 Queue 내부에 아무런 값도 저장되어 있지 않음을 의미
Line 4 : rear와 front의 값이 일치하지 않다면, Queue 내부에 값이 존재함을 의미
- 뒤에 설명하게 될 push 함수를 통해 값을 넣게되면, rear의 값이 1씩 증가된다.
- 따라서 front와 rear값에서 차이가 발생하게 되고, 이 차이를 통해 Queue가 비어있는지 아닌지 알 수 있다.
3. size() 구현
Line 2 : rear에서 front를 빼준 결과값이 Queue의 크기를 나타냄
4. push() 구현
Line 2 : 현재의 rear값을 1 증가시키며 해당 rear값을 인덱스로 하는 부분에 value를 저장
5. peek() 구현
Line 3 : 큐가 비어있을 경우에는 null을 반환한다.
Line 5 : 큐가 비어있지 않은 경우에는 현재의 front값에 1을 더한 값을 인덱스로 하는 부분의 값을 반환한다.
해당 과정에서 front의 값은 변화하지 않는다.
6. poll() 구현
Line 3 : 큐가 비어있을 경우에는 null을 반환한다.
Line 5 : 큐가 비어있지 않은 경우에는 현재의 front값을 1 증가시킨 후 해당 값을 인덱스로 하는 부분의 값을 반환한다.
해당 과정에서 front의 값은 1씩 증가하게 된다.
7. 만들어진 큐의 작동 예
'Algorithm' 카테고리의 다른 글
[Algorithm] 힙 구현 (Javascript) (0) | 2024.05.24 |
---|---|
[Algorithm] 그래프 표현 - 인접 리스트 구현(JAVA) (4) | 2023.10.05 |