자료구조
Stack
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
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);
// queue가 비어있는 지 확인
boolean isEmpty = q.isEmpty();
System.out.println("큐가 비어있나요? " + isEmpty);
}
}
Priority Queue (우선순위 큐)
- 완전 이진 트리로 정렬된 큐
package collections2;
import java.util.Collections;
import java.util.PriorityQueue;
public class PriorityQueueTest {
public static void main(String[] args) {
// 정렬이 되는 Queue 생성
PriorityQueue<Integer> pq = new PriorityQueue(); // 최소 힙 정렬
// PriorityQueue<Integer> pq = new PriorityQueue(Collections.reverseOrder()); // 최대힙 정렬
// 요소 추가
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);
min = pq.poll();
System.out.println("가장 작은 요소: " + min);
System.out.println("현재 PQ의 상태: " + pq);
min = pq.poll();
System.out.println("가장 작은 요소: " + min);
System.out.println("현재 PQ의 상태: " + pq);
min = pq.poll();
System.out.println("가장 작은 요소: " + min);
System.out.println("현재 PQ의 상태: " + pq);
min = pq.poll();
System.out.println("가장 작은 요소: " + min);
System.out.println("현재 PQ의 상태: " + pq);
min = pq.poll();
System.out.println("가장 작은 요소: " + min);
System.out.println("현재 PQ의 상태: " + pq);
min = pq.poll();
System.out.println("가장 작은 요소: " + min);
System.out.println("현재 PQ의 상태: " + pq);
min = pq.poll();
System.out.println("가장 작은 요소: " + min);
System.out.println("현재 PQ의 상태: " + pq);
}
}
- 요소 추가
- 요소 제거
Scanner
- 입력받기
package collections2;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요: ");
int i = sc.nextInt(); // 입력한 것을 int로 return
System.out.println("받은 데이터: " + i);
System.out.print("실수를 입력하세요: ");
double d = sc.nextDouble(); // double로 return
System.out.println("받은 데이터: " + d);
sc.nextLine(); // 엔터를 치면 줄바꿈을 읽어버림, 명시적으로 버리는 처리
System.out.print("이름을 입력하세요: ");
String name = sc.nextLine(); // String으로 return
System.out.println("받은 데이터: " + name);
sc.close(); // 체인이 걸려있던 모든 자원을 안전하게 해제
}
}
728x90
반응형
'LG 유플러스 유레카 SW > Algorithm' 카테고리의 다른 글
[#20] 알고리즘 - 최단 경로 (0) | 2025.02.21 |
---|---|
[#19] 비선형 자료구조 - 그래프 (0) | 2025.02.20 |
[#18] 비선형 자료구조 - 트리 (0) | 2025.02.19 |
[#17] 순열 & 조합 & 부분집합 (0) | 2025.02.18 |
[#16] 알고리즘 - 정렬 (0) | 2025.02.17 |