카카오 코테가 5일 남았는데, ChatGPT에게 이에 대한 계획표를 짜달라고 했다.
최종 점검이랑 휴식시간까지 챙겨주는 엄청난.... 근데 알고리즘을 이틀만에 정복하는 거 맞을까?
알고리즘 강의도 듣고 문제도 조금씩 풀어보았지만, 체득해서 코테를 푼다는 느낌은 없었어서 취업 대비 제대로 공부해 보려고 한다.
우선, 스택과 큐의 JS 코드를 알려달라 했다.
1. 스택
class Stack {
constructor() {
this.items = [];
}
// 요소 추가
push(element) {
this.items.push(element);
}
// 가장 최근에 추가된 요소 제거 및 반환
pop() {
if (this.items.length === 0) return "Stack is empty";
return this.items.pop();
}
// 가장 최근에 추가된 요소 확인
peek() {
return this.items[this.items.length - 1];
}
// 스택이 비어있는지 확인
isEmpty() {
return this.items.length === 0;
}
// 스택의 크기 반환
size() {
return this.items.length;
}
// 스택 초기화
clear() {
this.items = [];
}
}
js에서 [ ]로 빈 array를 지정하고 push와 pop을 통해 스택의 FILO(First In Last Out)의 구조를 구현하는 게 핵심인 듯하다.
일반적인 구글링으로 찾을 수 있는 스택의 코드보다 더 자세하게 알려준 것이 좋았다.
2. 큐
class Queue {
constructor() {
this.items = [];
}
// 요소 추가
enqueue(element) {
this.items.push(element);
}
// 가장 먼저 추가된 요소 제거 및 반환
dequeue() {
if (this.isEmpty()) return "Queue is empty";
return this.items.shift();
}
// 가장 먼저 추가된 요소 확인
front() {
if (this.isEmpty()) return "Queue is empty";
return this.items[0];
}
// 큐가 비어있는지 확인
isEmpty() {
return this.items.length === 0;
}
// 큐의 크기 반환
size() {
return this.items.length;
}
}
큐도 마찬가지로 스택과 비슷한 형태의 구조를 알려주었다. 다만 push 와 shift를 이용해 FIFO(First In First Out) 의 구조를 만들어주었다.
JS에서 array에서 값을 삽입하고 제거하는 4개의 함수가 있다. 값 추가 : push, unshift 값 제거 : pop, shift (출처는 그림을 클릭하면 원본 출처와 연결되게 해두었다.) shift와 unshift 는 앞 쪽인 array[0]에서 값을 삽입, 제거하고 pop과 push는 뒷 부분인array[array.length-1] 값을 삽입, 제거한다. 위의 요소를 조합하여 스택과 큐의 특징을 구현할 수 있다. |
'CS > 알고리즘&자료구조' 카테고리의 다른 글
[코딩온] Math.min([array]) = NaN 해결 (JS) (0) | 2023.12.12 |
---|---|
[코딩온] ChatGPT와 함께하는 JS 알고리즘 공부(1) - list(set) (0) | 2023.12.11 |