백준 > 스택

jinvicky·2023년 11월 29일
0

ALG

목록 보기
8/62

스택

Stack 클래스를 직접 구현해보자.

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

public class Main {
    private ArrayList<Integer> arrayList;

    public Main() {
        this.arrayList = new ArrayList<>();
    }

    public void push(int item) {
        arrayList.add(item);

    }

    public int pop() {
        return arrayList.size() < 1 ? -1 :arrayList.remove(arrayList.size()-1);
    }

    public int size() {
        return arrayList.size();
    }

    public int empty() {
        return arrayList.size() < 1 ? 1 : 0;
    }

    public int top() {
        return arrayList.size() < 1 ? -1 : arrayList.get(arrayList.size()-1);
    }

    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());

        Main stack = new Main();

        while (N-- > 0) {
            String[] arr = br.readLine().split(" ");
            switch (arr[0]) {
                case "push":
                    int num = Integer.parseInt(arr[1]);
                    stack.push(num);
                    break;
                case "top":
                    bw.append(stack.top() + "\n");
                    break;
                case "size":
                    bw.append(stack.size() + "\n");
                    break;
                case "empty":
                    bw.append(stack.empty() + "\n");
                    break;
                case "pop":
                    bw.append(stack.pop() + "\n");
                    break;
            }
        }
        bw.flush();
        bw.close();
    }
}

결과

정답

어려웠던 점

스택은 정적과 동적으로 나뉘는데 arrayList로 구현은 가능한데,
배열로 구현하는 것이 어려웠다.

배열은 선언순간부터 크기를 지정해야 하기 때문에 length가 항상 값들이 다 들어있는지 확신할 수 없다. 그래서 별도로 private int size 식으로 변수를 선언하고 push할때마다 size++을 해주어야 한다.

소요 시간

1시간 내

profile
일단 쓰고 본다

0개의 댓글