2023/12 4

Javascript - 최소 힙(MinHeap)

이진 트리를 기반으로 한 자료구조 부모 노드가 자식들보다 작거나 같은 구조, 가장 작은 값이 root에 위치하는 자료구조 우선순위 큐 구현, Heap Sort에 활용된다. 가장 작은 값을 O(1)의 시간으로 빠르게 찾을 수 있다. heapifyUp(); 새로운 노드가 삽입되고 자기 위치를 찾아가도록 하는 메소드 heapifyDown(); root 노드가 pop되고 최소 힙의 조건에 맞도록 트리를 재정비하는 메소드 class MinHeap { constructor() { this.heap = []; } push(value) { this.heap.push(value); this.heapifyUp(); } pop() { if (!this.heap.length) return null; const root = t..

비동기적으로 작동하는 useState를 알아보자

자바스크립트는 일반적으로 코드를 작성하면 동기적(Synchronous)으로 작동한다. 하지만 useState의 setter 함수인 setState는 비동기적(Asynchronous)으로 작동한다. 다시 말해 setState 함수의 실행이 완료될 때까지 기다려주지 않고 곧바로 다음 코드가 실핸된다는 것이다. 리액트에서 setState로 state를 관리하다보면 비동기적으로 작동해 내가 의도한대로 값을 갖고 있지 않을 때가 있다. setState가 의도대로 동작하지 않는 이유 자바스크립트는 동기적(Synchronous)으로 동작한다. 하지만 때때로 동기/비동기에 대한 이해가 부족하거나 라이브러리에서 제공하는 함수들에 대한 이해 없이 사용하게 되면 개발자는 의도대로 동작하지 않는 코드에 당황할 수 밖에 없다...

React 2023.12.18

프로그래머스 - 다단계 칫솔 판매

프로그래머스 - 다단계 칫솔 판매 풀이과정 문제는 길고 복잡하게 느껴졌는데, 특별한 알고리즘은 필요로 하지 않는 문제였다. 먼저 모든 데이터들이 개별 배열로 주어져서 이를 객체로 묶어줬다. // 판매원 : 판매원을 추천한 사람 을 이어주는 객체 const recommendation = new Object(); // 각 판매원이 얼마의 이익금을 가져갈지 저장하는 객체 const profit = new Object(); // 주어진 입력값을 통해 recommendation을 채우고, // profit은 모두 0으로 초기화 for(let i = 0; i < enroll.length; i++){ if(referral[i] !== '-') { recommendation[enroll[i]] = referral[i]..