알고리즘/백준

[백준] 10828번 : 스택 - JAVA(자바)

온한온 2025. 2. 27. 13:27

백준 10828번 : 스택

 

 

문제 풀이

자료 구조인 스택을 만드는 문제로, 스택의 개념을 이미 알고 있다면 쉬운 문제이다!

사실 모르고 있어도 문제 내용을 보면 쉽게 풀 수 있다.

 

스택은 후입선출(LIFO : Last In First Out) 구조로

먼저 들어온 데이터가 나중에 빠져나가고, 나중에 들어온 데이터가 먼저 빠져나간다. 

즉, 단방향 입출력 구조이다.

 

자바는 util 패키지 안에 Stack이 따로 있지만

문제에서는 Stack을 사용하지 않고, ArrayList로 스택을 만들었다.

 

문제 풀이 자체는 if문을 사용한 간단한 방식으로 풀었다.

 

코드
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());
        ArrayList<Integer> nums = new ArrayList<>();

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

            if (command.contains("push")) {
                nums.add(Integer.parseInt(command.split(" ")[1]));
            }
            if (command.equals("pop")) {
                if (nums.isEmpty()) {
                    System.out.println(-1);
                }
                if (!nums.isEmpty()) {
                    System.out.println(nums.remove(nums.size() - 1));
                }
            }
            if (command.equals("size")) {
                System.out.println(nums.size());
            }
            if (command.equals("empty")) {
                if (!nums.isEmpty()) {
                    System.out.println(0);
                }
                if (nums.isEmpty()) {
                    System.out.println(1);
                }
            }
            if (command.equals("top")) {
                if (!nums.isEmpty()) {
                    System.out.println(nums.get(nums.size() - 1));
                }
                if (nums.isEmpty()) {
                    System.out.println(-1);
                }
            }
        }
    }
}

push의 경우 push가 포함된다면 뒤에 오는 값을 넣고

나머지는 동일하다면으로 문자열을 확인해서 처리했다.