728x90

문제

스택을 직접 구현해서 주어진 명령어에 맞게 실행 결과를 출력하라.

 

접근 방식

스택의 크기는 가변적으로 늘어나야 하기 때문에

Vector 혹은 ArrayList를 사용해서 구현해주면 된다.

 

 

풀이

private static class Stack {
    Vector<Integer> vector = new Vector<>();

    private void push(Integer x) {
        vector.add(x);
    }

    private int pop() {
        try {
            return vector.remove(vector.size() - 1);
        } catch (Exception e) {
            return -1;
        }
    }

    private int size() {
        return vector.size();
    }

    private int empty() {
        return size() == 0 ? 1 : 0;
    }

    private int top() {
        try {
            return vector.get(size() - 1);
        } catch (Exception e) {
            return -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));

    StringBuilder sb = new StringBuilder();

    int n = Integer.parseInt(br.readLine());

    Stack stack = new Stack();

    for (int i = 0; i < n; i++) {
        String[] command = br.readLine().split(" ");

        switch (command[0]) {
            case "push": {
                stack.push(Integer.parseInt(command[1]));
                break;
            }
            case "pop": {
                sb.append(stack.pop()).append("\n");
                break;
            }
            case "size": {
                sb.append(stack.size()).append("\n");
                break;
            }
            case "empty": {
                sb.append(stack.empty()).append("\n");
                break;
            }
            case "top": {
                sb.append(stack.top()).append("\n");
                break;
            }
        }
    }

    bw.write(sb.toString());
    bw.flush();
}

 

위처럼 구현한 스택 클래스를 명령어에 맞게 호출해서 사용한다.

'Java > Algorithms' 카테고리의 다른 글

[백준] 1874번 : 스택 수열  (0) 2023.10.02
[백준] 10773번 : 제로  (0) 2023.10.01
[백준] 1158번 : 요세푸스 문제  (0) 2023.10.01
[백준] 5397번 : 키로거  (0) 2023.09.29
[백준] 1406번 : 에디터  (0) 2023.09.29

+ Recent posts