코테

(코테) [Java] Stack

그린티_ 2025. 5. 15. 15:23
반응형

📚 Stack (스택) - 후입선출의 대표 자료구조

"쌓아올린 접시에서 위에 있는 걸 먼저 꺼내는 구조"

 

 

개념 요약

  • StackLIFO(Last In, First Out) 구조.
  • 가장 나중에 들어온 데이터가 가장 먼저 나감.
  • 기본 연산:
    • push(x): x를 스택에 넣는다
    • pop(): 스택의 top을 제거하고 반환
    • peek() 또는 top(): 가장 위에 있는 값을 반환
    • isEmpty(): 스택이 비었는지 확인

Java 코드 예시

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        Stack<Integer> stack = new Stack<>();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < N; i++) {
            String input = br.readLine();

            if(input.startsWith("push")) {
                int x = Integer.parseInt(input.split(" ")[1]);
                stack.push(x);
            } else if(input.equals("pop")) {
                sb.append(stack.isEmpty() ? -1 : stack.pop()).append('\\n');
            } else if(input.equals("size")) {
                sb.append(stack.size()).append('\\n');
            } else if(input.equals("empty")) {
                sb.append(stack.isEmpty() ? 1 : 0).append('\\n');
            } else if(input.equals("top")) {
                sb.append(stack.isEmpty() ? -1 : stack.peek()).append('\\n');
            }
        }

        System.out.println(sb);
    }
}

 

상황에 맞게 먼저 넣은 것을 나중에 꺼내기 위해서 사용되는 수단!

하지만 Deque 처럼 양방향으로 빼는게 더 활용이 많다고 생각함!
그래서 그냥 stack이 이런 거구나~ 하고 이해만 하면 될 거 같음

반응형

'코테' 카테고리의 다른 글

(코테) [Java] Heap  (1) 2025.05.15
(코테) [Java] Deque  (0) 2025.05.15
(코테) [Java] Queue  (0) 2025.05.15
(코테) [Java] 형변환  (0) 2025.05.13
(코테) [Java] 배열 생성  (0) 2025.05.13