728x90
- 학습목표
- 알고리즘 페어 프로그래밍 문제 4일차
- 학습 스케쥴
3:00 ~ 4:00 PM - 알고리즘 페어 프로그래밍 3일차 학습 공유
4:00 ~ 6:00 PM - 알고리즘 페어 프로그래밍 학습
7:00 ~ 9:00 PM - 토의 및 마무리
Queue의 LinkedList와 ArrayList
데이터를 저장하는 방식이 다름.
LinkedList - 노드로 연결된 구조로 데이터를 저장. 각 노드는 데이터와 다음 노드에 대한 포인터를 가지고 있음.
ArrayList - 배열로 데이터를 저장. 배열은 연속적인 메모리 공간에 데이터를 저장한다.
- LinkedList는 ArrayList에 비해 삽입과 삭제가 빠르다. LinkedList는 노드의 연결만 변경하면 되지만, ArrayList는 데이터 변경 시 전체를 이동해야 하기 때문에 삽입과 삭제가 느림.
- LinkedList는 ArrayList에 비해 검색이 느리다. LinkedList는 처음부터 노드를 순회해야 하고, ArrayList는 인덱스를 사용하여 빠르게 검색할 수 있음.
- LinkedList는 ArrayList에 비해 메모리 사용량이 적다. LinkedList는 노드만 사용하지만, ArrayList는 지정된 크기의 배열을 사용하기 때문.
*삽입과 삭제가 자주 발생하는 경우 LinkedList를 사용.
검색이 자주 발생하는 경우 ArrayList를 사용.
PriorityQueue
Java에서 제공하는 우선순위 큐 자료구조. 내부적으로 heap 자료구조를 사용하여 구현되며, 각 원소는 우선순위를 가지고 있다.
원소의 순서는 항상 오름차순.
원소를 삽입하거나 삭제하는 연산은 O(log n)의 시간복잡도를 가지며, n은 PriorityQueue의 크기.
PriorityQueue는 동기화되지 않으므로, 여러 스레드에서 동시에 접근할 경우 문제가 발생할 수 있다.
PriorityQueue의 메서드
- add(element): element를 PriorityQueue에 추가합니다. 큐가 가득 차 있으면 예외발생(IllegalStateException)
- offer(element): element를 PriorityQueue에 추가합니다. 만약 큐가 가득 차 있으면, IllegalStateException 대신 false를 반환.
- peek(): PriorityQueue의 가장 앞에 있는 원소를 반환. 제거는 하지 않음.
- poll(): PriorityQueue의 가장 앞에 있는 원소를 반환 후, 제거.
- remove(element): PriorityQueue에서 element를 제거.
- contains(element): PriorityQueue에 element가 있는지 확인.
- size(): PriorityQueue의 크기 반환.
활용
- 최소값 알고리즘: PriorityQueue에 원소들을 삽입하고, poll()을 사용하여 가장 앞에 있는 원소를 반환.
- 최대값 알고리즘: PriorityQueue에 원소들을 역순으로 삽입하고, poll()을 사용하여 가장 앞에 있는 원소를 반환.
- 우선순위가 있는 작업을 처리하는 알고리즘: PriorityQueue에 작업들을 삽입하고, poll()을 사용하여 가장 앞에 있는 작업을 처리합니다.
- 정렬 알고리즘: PriorityQueue에 원소들을 삽입하고, poll()을 사용하여 원소들을 순서대로 꺼냅니다.
반응형
'스파르타 이노캠 > 워밍업' 카테고리의 다른 글
2023.05.29 월 워밍업 6일차 (0) | 2023.05.29 |
---|---|
2023.05.26 금 워밍업 5일차 (0) | 2023.05.26 |
2023.05.24 수 워밍업 3일차 (1) | 2023.05.24 |
2023.05.23 화 워밍업 2일차 (0) | 2023.05.23 |
2023.05.22 월 워밍업 1일차 (0) | 2023.05.22 |