새소식

알고리즘 문제풀이/BOJ

[BOJ] 백준 10828 스택 자바(java) 풀이 (자바 스택 메소드)

  • -

BOJ 10828번 스택 자바(java) 풀이

문제 정리

  1. 스택을 구현하고 다음 명령들을 처리해라.
  2. push X: 정수 X를 스택에 넣는다.
  3. pop: 스택에서 가장 위에 있는 정수를 빼고, 출력 한다. 스택이 비었다면 -1 출력
  4. size: 스택의 크기를 출력한다.
  5. empty: 스택이 비었다면 1 아니면 0을 출력한다.
  6. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 비어있다면 -1 출력
    push 명령을 제외하고 모두 값을 출력해야 합니다.


문제 풀이

이 문제는 문제와 유사합니다. 이도 풀어보시는걸 추천드립니다!!
java에 구현되어 있는 Stack을 이용하여 문제를 풉니다. Stack의 메소드 몇 개만 알면 풀 수 있습니다.
stack을 사용하기 위해서는 다음을 추가해야 합니다.

import java.util.Stack;
  1. push: push() 메소드를 이용하여 값을 넣습니다.
  2. pop: push() 메소드를 이용하여 값을 빼고 출력합니다.
  3. size: size() 메소드를 이용하여 스택의 크기를 출력합니다.
  4. empty: isEmpty()메소드를 이용하여 비어있는지 확인하고 값을 출력합니다. 비어있다면 true를 반환합니다.
  5. top: peek() 메소드를 이용하여 스택의 가장 위에 있는 정수를 출력합니다. 이는 이 메소드를 사용하지 않고 가장 마지막에 넣은 값을 이용하여 출력할 수도 있습니다.


백준 10828 스택 자바 소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Stack;

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

        for(int i=0; i<n; i++){
            st = new StringTokenizer(br.readLine(), " ");
            switch(st.nextToken()){
                case "push":
                    stack.push(Integer.parseInt(st.nextToken()));
                    break;
                case "pop":
                    if(!stack.isEmpty())
                        System.out.println(stack.pop());
                    else
                        System.out.println(-1);
                    break;
                case "size":
                    System.out.println(stack.size());
                    break;
                case "empty":
                    if(!stack.isEmpty())
                        System.out.println(0);
                    else
                        System.out.println(1);
                    break;
                case "top":
                    if(!stack.isEmpty())
                        System.out.println(stack.peek());
                    else
                        System.out.println(-1);
                    break;
            }
        }
    }
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.