time complexity
📊 time Complexity 1️⃣ 완전 이중 반복문 (Full Nested Loop) for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { // 실행 코드 } } 📌 완전 이중 반복문의 시간 복잡도 각 반복문의 범위: 1 ~ N...
📊 time Complexity 1️⃣ 완전 이중 반복문 (Full Nested Loop) for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { // 실행 코드 } } 📌 완전 이중 반복문의 시간 복잡도 각 반복문의 범위: 1 ~ N...
📌 이진 탐색에서의 lowerBound와 upperBound 함수 의미 조건 반환값 lowerBound(arr, x) x 이상(≥)의 첫 위치 arr[i] >= x x가 처음 나타나는 위치 또는 들어갈 위치 ...
🔍 Parametric Search (파라메트릭 서치) 파라메트릭 서치란 어떤 조건을 만족하는 ‘최적의 값(최소/최대)’을 이진 탐색을 통해 찾는 알고리즘입니다. 정확한 값을 찾는 일반 이진 탐색과 달리, 조건을 만족하는 가장 작은 값 (또는 큰 값) 을 찾는 데에 초점이 있습니다. ✅ 활용 예시 최대한도로 가능한 최소 비용, 최소한도로...
🔍 Binary Search (이진 탐색) 이진 탐색(Binary Search)은 정렬된 배열에서 특정 값을 빠르게 찾는 알고리즘입니다. 탐색 범위를 절반씩 줄여가며 원하는 값을 찾기 때문에 시간 복잡도는 O(log N) 입니다. ✅ 동작 조건 배열이 반드시 오름차순으로 정렬되어 있어야 한다. 정렬되지 않은 배열에서 이진 탐색을 수...
✅ 우선순위 큐 (PriorityQueue) PriorityQueue는 힙(Heap) 기반의 자료구조로, 우선순위가 높은 요소를 우선적으로 처리하는 큐입니다. Java에서는 기본적으로 Min Heap 방식으로 구현됩니다. poll() 시 가장 우선순위가 높은 값이 꺼내지며, 숫자가 작을수록 우선순위가 높습니다. 🔍 개요 내부구조: 힙(Hea...
✅ HashSet vs HashMap Java에서 HashSet과 HashMap은 모두 Hash Table 기반의 자료구조입니다. 둘 다 빠른 삽입/탐색/삭제가 가능하지만, 저장 방식과 사용 목적은 다릅니다. ✅ HashSet HashSet은 중복을 허용하지 않는 집합(Set) 구조입니다. 내부적으로는 HashMap을 사용하여 원소들을 저장합...
✅ ArrayDeque ArrayDeque는 원형 배열 기반의 양쪽 끝에서 삽입/삭제가 가능한 자료구조입니다. Stack, Queue, Deque 인터페이스를 모두 지원합니다. 🔍 개요 내부구조: 원형 배열 기반 지원 인터페이스: Stack, Queue, Deque 양쪽 끝에서 삽입/삭제 가능 ⏳ 시간 복잡도 요약 ...
💡 비트마스크로 부분집합 다루기 부분집합을 구할 때 재귀나 백트래킹을 많이 쓰지만, 비트마스크를 활용하면 훨씬 간단하고 빠르게 구현할 수 있습니다. 이번 포스트에서는 {1, 2, 3, 4, 5} 집합을 대상으로 합이 5인 부분집합의 개수를 구하는 방법을 소개합니다. ✅ 기본 개념: 비트마스크란? N개의 원소가 있을 때, 부분집합의 총 개수는 ...
🔍 ArrayList vs LinkedList Java의 List 인터페이스를 구현한 대표적인 두 클래스인 ArrayList와 LinkedList는 내부 구조와 성능 특성이 다릅니다. 사용 목적에 따라 적절히 선택하는 것이 중요합니다. 📌 차이점 요약 항목 ArrayList LinkedList ...
✅ 동적 배열 (ArrayList) ArrayList는 배열 기반의 동적 리스트로, 자동으로 크기 확장되며 빠른 인덱스 접근이 가능합니다. 🔍 개요 내부구조: 배열 기반 자동 크기 확장: 요소가 추가될 때 크기가 자동으로 늘어남 ⏳ 시간 복잡도 요약 | 연산 | 시간 복잡도 | 설명 ...