💡 URECA

[URECA] DAY15 자바

코딩하세현 2025. 2. 14. 13:49
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());

2740번: 행렬 곱셈

 

 

행렬 답 적기

 

728x90