힙(3)
-
[JS] 힙/우선 순위 큐 새로 짜봤습니다.
Javascript에서 힙이 필요하면 매번 구현을 해줘야하는 정말.. 험난한 여정이 있는데요. 저번에 제가 대략적으로 공유한 코드가 모든 상황에서 쓰이기 힘들더라구요. 특히 pop에서 최상단 노드부터 왼쪽 노드, 오른쪽 노드를 비교해줘야하는데, 이 과정에서 undefined와 관련해서 많은 오류가 있는 걸 확인했습니다. 새로 짠 코드를 공유해드릴게요. Heap.js class MinHeap { constructor() { this.heap = [null]; } push(val) { this.heap.push(val); let currentIndex = this.heap.length - 1; let parentIndex = Math.floor(currentIndex / 2); while (parentInd..
2022.08.30 -
[JS] 디스크 컨트롤러 - 왜 이 문제는 힙을 써야하는지 알랴드림!
이 문제는 유형 분류에도 힙으로 되어있지만, 전 일단 청개구리 마인드가 있는지... 일단 이런거 있으면 제 생각대로 한 번 해보거든여 이러면 일단 왜 꼭 이 자료구조나 방법을 써야하는지 감도 잡히고, 그 자료 구조가 어떤 상황에서 유리한지 익힐 수 있어서 좋은 방법이 아닌가 생각이 듭니다. 스택으로 해볼때 힙 쓰면 금방할 줄 알고 이렇게 썼는데 그냥 힙으로 쓰세요. 진짜 인생 피곤하네요 이문제 하하 아무튼 디스크 컨트롤러 시작합니다! 같이 한 번 보시죠! 문제 요약 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1..
2022.08.04 -
[JS] 힙(Heap) - 큐 외길인생에서 힙을 만나다.
스택과 큐로 모든 자료구조를 다 처리할 수 있었던 프로그래머스의 레벨 2문제와 다르게 레벨 3만 되어도 다양한 자료구조들을 쓰는 걸 발견했다. 힙(Heap)이나 트라이(Trie)등 아직 익숙하지 않은 자료 구조를 하나하나 정리해볼 생각이다. 그리고 여담이지만 js에서는 자료구조 라이브러리가 없어서 다 직접 구현해줘야한다. js 환경에서 class만드는게 익숙하진 않았지만, 수 십 번의 큐를 만들면서 구조가 나름 익숙해졌다. 자 힙에 대해 알아보자! 힙과 우선순위 큐 일반적인 큐는 FIFO 구조를 따르기 때문에 먼저 enqueue 된 요소가 먼저 나가지만, 우선순위 큐에서는 가장 우선 순위가 높은 요소가 먼저 나간다. 조금만 생각해보면 이 이상한 구조가 매번 요소 삽입때마다 정렬을 해줘야한다는 걸 알 수 ..
2022.08.03