이진 탐색 (Binary Search)
CS/알고리즘
이진 탐색이란?정렬된 배열에서 특정 값을 찾을 때, 매번 탐색 범위를 반으로 줄여가며 효율적으로 찾는 알고리즘이다.배열: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]찾는 값: 71단계: 중간값 5와 비교 → 7 > 5, 오른쪽 범위로2단계: 중간값 8과 비교 → 7 선형 탐색이 O(n)인 반면, 이진 탐색은 O(log n)의 시간복잡도를 가진다. 동작 원리배열의 중간 값을 확인찾는 값과 중간 값을 비교같으면 → 탐색 성공크면 → 오른쪽 절반에서 탐색작으면 → 왼쪽 절반에서 탐색범위가 없어질 때까지 반복 장단점장점빠른 탐색 속도: O(log n)대용량 데이터에서도 효율적단점배열이 정렬되어 있어야 함삽입/삭제 후 재정렬 필요정렬되지 않은 데이터에는 사용 불가 구현재귀 방식function bina..
트리와 이진 트리
CS/자료구조
트리 (Tree)란?트리는 하나의 노드에서 시작해 나무가 가지를 뻗듯이 뻗어나가는 비선형 자료구조다.계층 구조를 표현하기에 적합하며, 파일 시스템, 조직도, DOM 구조 등에서 널리 사용된다. A ← 루트 노드 / \ B C ← A의 자식 노드 /|\ \ D E F G ← 터미널 노드(리프 노드)트리의 구성 요소용어설명노드(Node)데이터를 담는 가장 작은 단위간선(Edge)노드와 노드를 연결하는 선루트 노드(Root)트리의 최상위 노드. 부모가 없다부모 노드(Parent)간선으로 연결된 두 노드 중 상위 노드자식 노드(Child)간선으로 연결된 두 노드 중 하위 노드터미널 노드(Terminal)자식이 없는 노드..
Zustand로 전역 상태 관리하기
Frontend
React에서 전역 상태를 관리하는 방법은 여러 가지가 있다.Context API, Redux, Recoil 등 다양한 선택지가 있지만, 최근에는 Zustand가 주목받고 있다. Zustand는 용량이 가볍고 사용법이 직관적이며, 보일러플레이트 코드가 적다는 장점이 있다.이 글에서는 Zustand의 기본 사용법부터 실무에서 유용한 최적화 기법과 미들웨어 활용법까지 정리해봤다. Zustand를 사용하는 이유Context API의 한계Context API는 Props drilling 문제를 해결할 수 있지만, 범용적인 전역 상태 관리보다는 국소적인 데이터 공유에 더 적합하다.Context 값이 변경되면 해당 Context를 구독하는 모든 컴포넌트가 리렌더링되는 문제도 있다.Zustand의 장점매우 가벼운 용..