자바 - Stack 과 Queue

Gaeng·2024년 11월 4일
0

Java 알고리즘

목록 보기
4/6

Stack

🔦스택
스택은 삽입과 삭제 연산이 후입선출(LIFO)로 이뤄지는 자료구조.
스택은 DFS(Deep First Search), 백트레킹 종류의 코테에 효과적

Stack 클래스의 주요 메소드

import java.util.Stack;

Stack<Integer> stack = new Stack<>();
메소드설명
push(E item)스택의 맨 위에 요소를 추가합니다.
pop()스택의 맨 위에 있는 요소를 제거하고 반환합니다. 스택이 비어 있으면 예외 발생.
peek()스택의 맨 위에 있는 요소를 제거하지 않고 반환합니다.
isEmpty()스택이 비어 있는지 확인하고, 비어 있으면 true를 반환합니다.
search(Object o)스택에서 특정 요소의 위치를 반환합니다. (1부터 시작, 요소가 없으면 -1 반환)

예시 코드

import java.util.Stack;

public class StackExample {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();

        // push: 요소 추가
        stack.push(10);
        stack.push(20);
        stack.push(30);

        // peek: 최상단 요소 확인
        System.out.println("Top element: " + stack.peek()); // Output: 30

        // pop: 최상단 요소 제거 및 반환
        System.out.println("Removed element: " + stack.pop()); // Output: 30

        // isEmpty: 스택이 비었는지 확인
        System.out.println("Is stack empty? " + stack.isEmpty()); // Output: false

        // search: 특정 요소의 위치 찾기
        System.out.println("Position of 10: " + stack.search(10)); // Output: 2
    }
}

Queue

큐(Queue)는 선입선출(FIFO, First In First Out) 방식으로 작동하는 자료구조 은행 줄 서기나 대기열과 유사하게, 먼저 들어온 데이터가 먼저 처리됩니다.
큐는 BFS(Breadth Firsth Search)에서 자주 사용됨

Queue 인터페이스의 주요 메소드

import java.util.Queue;
import java.util.LinkedList;

Queue<Integer> queue = new LinkedList<>();
메소드설명
add(E e)큐의 맨 뒤에 요소를 추가합니다. (큐가 꽉 차면 예외 발생)
offer(E e)큐의 맨 뒤에 요소를 추가합니다. (큐가 꽉 찬 경우 예외 대신 false 반환)
remove()큐의 맨 앞에 있는 요소를 제거하고 반환합니다. (비어 있으면 예외 발생)
poll()큐의 맨 앞에 있는 요소를 제거하고 반환합니다. (비어 있으면 null 반환)
element()큐의 맨 앞에 있는 요소를 확인합니다. (비어 있으면 예외 발생)
peek()큐의 맨 앞에 있는 요소를 확인합니다. (비어 있으면 null 반환)

예시 코드

import java.util.Queue;
import java.util.LinkedList;

public class QueueExample {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();

        // add/offer: 요소 추가
        queue.add(1);
        queue.offer(2);
        queue.offer(3);

        // peek: 맨 앞 요소 확인
        System.out.println("Front element: " + queue.peek()); // Output: 1

        // poll: 맨 앞 요소 제거 및 반환
        System.out.println("Removed element: " + queue.poll()); // Output: 1

        // isEmpty: 큐가 비어 있는지 확인
        System.out.println("Is queue empty? " + queue.isEmpty()); // Output: false
    }
}
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글