반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 급등 이유
- 백준
- 주식
- 주식 상한가
- 상한가 이유
- 상한가
- 경제뉴스
- 테마주
- 코딩테스트
- 알고리즘
- 손경제 요약
- 주식 분석
- 경제뉴스 요약
- 손에 잡히는 경제 요약
- 손에 잡히는 경제
- 파이썬
- 월세
- 경제
- Python
- boj
- 급등주
- 상한가 분석
- 이진우
- 부동산
- java
- 전세
- 손경제
- 자바
- 프로그래머스
- 이진우의 손에 잡히는 경제
Archives
- Today
- Total
Completion over Perfection
JAVA 알고리즘 코딩테스트 자료구조 정리 (DAT / HashMap / ArrayList / ArrayDeque / TreeMap / PriorityQueue) 본문
카테고리 없음
JAVA 알고리즘 코딩테스트 자료구조 정리 (DAT / HashMap / ArrayList / ArrayDeque / TreeMap / PriorityQueue)
난차차 2025. 4. 19. 17:00반응형
DAT / HashMap / ArrayList / ArrayDeque / TreeMap / PriorityQueue 는 각각 언제 최대 성능을 발휘할까?
언제 써야 될까?
(결론) 상황에 따라 적절한 자료구조를 선택해야 하는데, DAT를 쓸 수 있는 조건이면 무조건 DAT를 쓰는것이 좋다. 가장 빠르다.
(추가) JAVA에서는 String이 길어지면 속도가 많이 느려진다고 함. String을 key로 쓰는 경우 주의해아하며, 가급적 unique한 숫자로 바꾸는 것이 유리함.
| 구분 | Big O 시간복잡도 | ||||
| 자료구조 | 주로 사용되는 문제 유형 | 주요 특징 및 사용 이유 | 삽입 | 삭제 | 탐색 |
| DAT (Direct Address Table) |
알파벳 빈도수 계산, 숫자 출현 여부 등 범위가 작은 경우의 빈도 체크 |
인덱스를 직접 접근하는 방식으로 속도가 매우 빠름. 범위가 제한적일 때 효율적. |
O(1) | O(1) | O(1) |
| HashMap | 문자열 빈도 체크, 키-값 저장 및 조회 문제, 중복 체크, 방문 여부 체크 등 |
키 기반의 빠른 탐색 및 저장이 가능. 대부분의 상황에서 빠른 성능을 제공 | O(1) | O(1) | O(1) |
| ArrayList | 순서가 있는 데이터 저장 및 접근, 단순 데이터 저장 및 순회 문제 | 인덱스로 접근 가능하며 데이터가 많지 않거나 삽입/삭제가 적은 경우 적합. 순회가 빈번한 경우 유리. |
O(1) (맨 뒤 추가) O(n) (중간 추가) | O(n) | O(1) (인덱스 접근) O(n) (검색) |
| ArrayDeque | BFS(너비 우선 탐색), 슬라이딩 윈도우, 큐/스택 응용 문제 |
양쪽 끝에서 삽입/삭제 연산이 빠름. 큐와 스택 모두 가능. BFS 구현 시 가장 적합. |
O(1) | O(1) | O(n) (검색) |
| TreeMap | 키의 정렬이 필수적인 문제, 범위 검색, 정렬된 데이터 관리 문제 |
키가 자동으로 정렬되어 저장됨. 정렬된 데이터에 대한 접근이 필요할 때 가장 유용함. |
O(log N) | O(log N) | O(log N) |
| PriorityQueue | 최소/최대값을 빠르게 꺼내는 문제, 다익스트라 알고리즘, 힙 정렬, 그리디 알고리즘 문제 |
항상 가장 우선순위가 높은 값 (최소값/최대값)을 빠르게 접근 가능. 우선순위 큐 문제에서 필수적. |
O(log N) | O(log N) | O(1) (peek) O(n) (검색) |
반응형
Comments