728x90
스택
LIFO 구조(마지막에 들어온게 처음 나옴)
Last In First OUT
엘베타기
상수는 데이터를 갖을 수 있다. 하지만 static이어야한다.
interface data 조건: public statie final
시스템 스택은 제어할 수 없다..
package collections2;
import java.util.Stack;
public class StackTest {
public static void main(String[] args) {
// Stack instance 생성
Stack<String> stack = new Stack();
// 요소 추가
stack.push("첫 번째");
stack.push("두 번째");
stack.push("세 번째");
System.out.println("현재 stack: "+stack);
// 요소 제거
String topE=stack.pop();
System.out.println("제거된 요소: "+topE);
System.out.println("제거 후 stack:"+stack);
// 맨 위 요소 확인
String peekE=stack.peek();
System.out.println("맨 위 요소: "+peekE);
System.out.println("peek 후 stack:"+stack);
// stack이 비어있는지 확인
boolean isEmpty=stack.isEmpty();
System.out.println("스택이 비어있나요?" + isEmpty);
}
}
QUEUE
FIFO
밥집 줄서기
큐는 정렬된 큐로 사용하는 것이 중요구르트
package collections2;
import java.util.LinkedList;
import java.util.Queue;
public class LinkedListQueueTest {
public static void main(String[] args) {
// Queue 생성
Queue<String> q = new LinkedList<>();
// 요소 추가
q.offer("첫번째");
q.offer("두 번째");
q.offer("세 번째");
System.out.println("현재 큐 상태: " + q);
String e = q.poll();
System.out.println("제거된 요소: " + e);
System.out.println("제거된 후 큐 상태: " + q);
e = q.peek();
System.out.println("맨 앞 요소: " + e);
System.out.println("peek 후 큐 상태: " + q);
boolean isEmpty = q.isEmpty();
System.out.println("큐가 비어있나요? " + isEmpty);
}
}
아ㅣ진 트리
는 자식이 딱 두명
완전 이진트리여서 왼쪽 부터 채워진다.
<이진트리 그림 넣기>
PriorityQueue : 정렬기능이 있는 큐, 완전이진트리, 디폴트는 최소힙, 추가/삭제는 O(log n) 검색은 O(n)
/*
현재 PQ의 상태 : [30]
현재 PQ의 상태 : [10, 30]
현재 PQ의 상태 : [10, 30, 20]
현재 PQ의 상태 : [10, 30, 20, 50]
현재 PQ의 상태 : [10, 30, 20, 50, 40]
현재 PQ의 상태 : [5, 30, 10, 50, 40, 20]
현재 PQ의 상태 : [5, 30, 10, 50, 40, 20, 25]
현재 PQ의 상태 : [5, 15, 10, 30, 40, 20, 25, 50]
현재 PQ의 상태 : [5, 15, 10, 30, 40, 20, 25, 50, 35]
현재 PQ의 상태 : [1, 5, 10, 30, 15, 20, 25, 50, 35, 40]
가장 작은 요소 : 1
현재 PQ의 상태 : [5, 15, 10, 30, 40, 20, 25, 50, 35]
가장 작은 요소 : 5
현재 PQ의 상태 : [10, 15, 20, 30, 40, 35, 25, 50]
*/
import java.util.*;
public class PriorityQueueTest {
public static void main(String[] args) {
//정렬이 되는 Queue 생성
Queue<Integer> pq=new PriorityQueue();
//요소 추가
pq.offer(30);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(10);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(20);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(50);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(40);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(5);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(25);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(15);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(35);
System.out.println("현재 PQ의 상태 : "+pq);
pq.offer(1);
System.out.println("현재 PQ의 상태 : "+pq);
//요소 제거
Integer min=pq.poll();
System.out.println("가장 작은 요소 : "+min);
System.out.println("현재 PQ의 상태 : "+pq);
min=pq.poll();
System.out.println("가장 작은 요소 : "+min);
System.out.println("현재 PQ의 상태 : "+pq);
}
}
4)PriorityQueue 최대힙으로 만드는 방법
Queue<Integer> pq=new PriorityQueue(Collections.reverseOrder());
행렬 답 적기
728x90
'💡 URECA' 카테고리의 다른 글
[URECA] 수업 중 미션 | 순열, 조합 문제 만들기 (0) | 2025.02.18 |
---|---|
[URECA] Day 16 | 알고리즘 (0) | 2025.02.17 |
[URECA] 프로그래머스 입문 - 20문제 (0) | 2025.02.13 |
[URECA] DAY14 | 자바(5) 재귀 (0) | 2025.02.13 |
[URECA] Day 13 | 자바(5) | 컬렉션 API(ArrayList, HashSet, TreeSet, HashMap) 재귀 (0) | 2025.02.12 |