queue: LIFO로 다양하게 구현하는 방법이 존재 & 항상 import java.util.*;가 필요
1. LinkedList : 일반 > ArrayList : 시간 오래 걸림
- Queue<Integer> queue = new LinkedList<>();
- queue.offer(1); queue.poll(); queue.isEmpty();
=> 위 3가지 메소드는 Queue의 기본 메소드로, 어떤 new를 사용하던지 공통적으로 사용 가능
2. PriorityQueue : Queue vs PriorityQueue
- Queue<Integer> queue = new PriorityQueue<>();
- queue.offer(1); / queue.poll(); : 기본적으로 가장 작은 값이 우선
- PriorityQueue<String[]> queue = new PriorityQueue<>();
- 간단한 우선 순위 설정
new PriorityQueue<>(Comparator.comparing(Triple::getFirst).reversed().thenComparing(Triple::getSecond).thenComparing(Triple::getThird));
import java.util.*;
public class Main {
public static void main(String[] args) {
PriorityQueue<String[]> queue = new PriorityQueue<>(new Comparator<String[]>() {
@Override
public int compare(String[] a, String[] b) {
// 여기서 우선순위를 설정합니다.
// 예를 들어, 문자열의 길이를 기준으로 정렬하도록 하겠습니다.
return a[0].length() - b[0].length();
}
});
// 요소 추가
queue.offer(new String[]{"apple"});
queue.offer(new String[]{"banana"});
queue.offer(new String[]{"orange"});
// 우선순위가 가장 높은 요소 확인 (peek)
String[] highestPriority = queue.peek();
System.out.println("가장 우선순위가 높은 요소: " + Arrays.toString(highestPriority));
}
}
3. ArrayDeque : 효율적인 메모리 사용과 높은 성능
- Queue<Integer> queue = new ArrayDeque<>(); => 위 3가지 메소드
- ArrayDeque<Integer> deque = new ArrayDeque<>();=> addFirst(Last)(x); deque.removeFirst(Last);
import java.util.ArrayDeque;
public class ArrayDequeExample {
public static void main(String[] args) {
ArrayDeque<Integer> deque = new ArrayDeque<>();
// 앞과 뒤에서 요소 추가
deque.addFirst(1); // 앞에 1 추가
deque.addLast(2); // 뒤에 2 추가
// 앞과 뒤에서 요소 제거
int first = deque.removeFirst(); // 앞에서 요소 제거 및 반환 (1 반환)
int last = deque.removeLast(); // 뒤에서 요소 제거 및 반환 (2 반환)
System.out.println("First: " + first); // 출력: First: 1
System.out.println("Last: " + last); // 출력: Last: 2
}
}
'알고리즘' 카테고리의 다른 글
[python -> java] 코딩테스트 언어 연습 2 (0) | 2024.01.08 |
---|---|
[python -> java] 코딩테스트 언어 연습 1 (1) | 2024.01.02 |
[프로그래머스] 무인도 여행 (0) | 2023.12.01 |
[프로그래머스] 이모티콘 할인행사 (0) | 2023.11.29 |
[프로그래머스] 투포인터 (1) | 2023.11.27 |