S[i] = A[0] + A[1] + ... + A[i-1] + A[i]
S[i] = S[i-1] + A[i];
S[j] - S[i-1] // i에서 j까지 구간 합
Stack 클래스의 주요 메서드는 push, pop, peek, isEmpty 등이 있다.
push 메서드는 스택의 맨 위에 새로운 요소를 추가한다.
pop 메서드는 스택의 맨 위에서 요소를 제거하고 반환한다.
peek 메서드는 스택의 맨 위에서 요소를 제거하지 않고 반환한다.
isEmpty 메서드는 스택이 비어 있는지 여부를 확인한다.
Queue 클래스의 주요 메서드는 add, poll, peek, isEmpty 등이 있다.
add 메서드는 지정된 요소를 큐에 추가한다.
poll 메소드는 큐의 맨 앞에서 요소를 제거하고, 제거된 요소를 반환한다. - peek 메소드는 요소를 제거하지 않고 큐의 맨 앞 요소의 값을 읽어온다.
isEmpty 메서드는 큐가 비어 있는지 여부를 확인한다.
Java에서 우선순위 큐(PriorityQueue)는 Queue 인터페이스를 구현한 클래스 중 하나이다. 우선순위 큐는 일반적인 큐와 달리, 저장된 요소들이 우선순위에 따라 정렬되어 저장되는 자료구조이다.
우선순위 큐는 일반적으로 힙(heap)이라는 자료구조를 사용하여 구현된다. Java에서 PriorityQueue 클래스는 힙 기반으로 구현되어 있으며, 큐에 추가된 요소들은 힙 내부의 특정 위치에 저장된다. 이 때, 우선순위가 높은 요소는 힙의 루트에 위치하게 되고, 삭제될 때 먼저 제거된다.
우선순위 큐는 기본적으로 오름차순으로 정렬되며, 이외에도 Comparator 인터페이스를 구현하여 원하는 우선순위로 정렬할 수도 있다.
PriorityQueue<Integer> MyQueue = new PriorityQueue<>((o1, o2) -> {
int first_abs = Math.abs(o1);
int second_abs = Math.abs(o2);
if (first_abs == second_abs)
return o1 > o2 ? 1 : -1;// 절대값이 같은 경우 음수 우선 정렬
else
return first_abs - second_abs;// 절대값을 기준으로 정렬
});
위에서는 절댓값이 높은 순으로, 만약 절댓값이 같다면 음수를 우선 정렬하는 우선순위 큐이다.