Data Structure / Algorithm (2)
Data Structure
List
A-1) ArrayList (랜덤 접근, 끝 삽입 강함)
ArrayList (랜덤 접근, 끝 삽입 강함)import java.util.*;
// 선언/초기화
List<Integer> al = new ArrayList<>(); // 기본
List<Integer> alCap = new ArrayList<>(1<<20); // 초기 용량
al.add(10); al.add(20);
al.add(1, 15); // 중간 삽입 O(N)
al.set(0, 7);
int v = al.get(1); // O(1)
al.remove(al.size()-1); // 끝 삭제 O(1) 평균
al.remove(Integer.valueOf(15)); // 값으로 삭제(첫 매치)
// 반복/검색
for (int x : al) { /* read only */ }
int idx = al.indexOf(20); // O(N), 없으면 -1
boolean has = al.contains(7); // O(N)
// 정렬/역정렬
al.sort(Comparator.naturalOrder()); // 오름차순
al.sort(Comparator.reverseOrder()); // 내림차순
// 배열 <-> 리스트
Integer[] boxed = al.toArray(new Integer[0]);
int[] prim = al.stream().mapToInt(Integer::intValue).toArray();
List<Integer> fromArr = new ArrayList<>(Arrays.asList(1,2,3));
// 부분리스트(뷰!)
List<Integer> sub = al.subList(0, Math.min(3, al.size())); // 원본과 연결된 뷰A-2) LinkedList (노드 연결, 연결지점 알면 삽입/삭제 O(1))
LinkedList (노드 연결, 연결지점 알면 삽입/삭제 O(1))Map
B-1) HashMap<K,V> (평균 O(1))
HashMap<K,V> (평균 O(1))Set
C-1) HashSet<E> (중복 제거/멤버십 테스트)
HashSet<E> (중복 제거/멤버십 테스트)Heap(Priority Queue)
D-1) Min Heap / Max Heap / 커스텀 비교
D-2) Top-K & K-유지 패턴
D-3) kth 요소 / running median
Stack / Queue / Dequeue
E-1) Stack (후입선출)
E-2) Queue (선입선출)
E-3) Deque (양끝 삽입/삭제)
E-4) 모노토닉 큐 (슬라이딩 윈도우 최대 O(N))
Matrix / Grid
F-1) 선언/초기화/입력
F-2) 경계/이동/방문
F-3) BFS (최단거리)
F-4) 0-1 BFS (비용 0/1)
F-5) Flood Fill (영역 개수/면적)
F-6) 2D Prefix Sum (누적합)
F-7) 행/열 조작(회전/전치)
공통 유틸
Graph
Tree
Tip
G-1) 빈도 상위 K개 (문자/정수 공통)
G-2) 두 수 합(존재 여부)
G-3) 그래프 인접리스트 & 다익스트라
G-4) LinkedHashMap으로 LRU 캐시 (간단형)
Algorithm
Sorting (배열/리스트/객체)
1. 기본 배열 정렬
2. 2차원 배열 정렬
3. 객체 정렬 (Comparable & Comparator)
4. Map 정렬 (Key, Value 기준)
5. 우선순위 큐(PriorityQueue)와 정렬
누적합(Prefix Sum)/구간합(Interval Sum)/ Sliding Window / Two Pointer
1. Prefix Sum (1D/2D)
2. Sliding Window
3. Two Pointer
BFS/DFS
BackTracking
1. 기본
2. 순열 (중복X)
3. 조합 (중복X)
Brute Force
Recursive
Greedy
DP (Dynamic Programming)
1. Bottom-Up (Tabulation, for문)
2. Top-Down (Memoization, Recursive)
구현/시뮬레이션(Implemetatio/Simulation)
방향벡터 & 이동시도 & 범위 체크 & 방향 이동
회전 (1차원, 2차원 90도, 부분 회전)
큐 & 시간 흐름 시뮬레이션
상태 갱신
조건에 따라 상태 변화 반복 / 조건을 만족할 때까지 무한 반복
Map 상태 디버깅 함수
배열 복사 (옅은 복사, 깊은 복사)
주사위
Last updated