클라우드 스쿨/자바

Problem 10828 - 스택(JAVA)

qqlzzb 2023. 6. 29. 17:05

간단한 자료구조 문제이지만, C++ 대신 자바를 공부하면서 새로 풀어봤다.

문제 : https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

코드

package Algorithm;

import java.util.Scanner;

public class Problem10828 {
    static int[] arr = new int[10001];
    static int topflag=-1;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        int n = sc.nextInt();

        for(int i=0; i<n; i++) {
            String cmd = sc.next();
            if(cmd.equals("push")) {
                int num = sc.nextInt();
                push(num);
            }
            else if(cmd.equals("pop")) sb.append(pop()).append('\n');
            else if(cmd.equals("size")) sb.append(size()).append('\n');
            else if(cmd.equals("empty")) sb.append(empty()).append('\n');
            else sb.append(top()).append('\n');
        }
        System.out.print(sb);
    }

    static public void push(int x) {
        topflag++;
        arr[topflag]=x;
    }

    static public int pop() {
        if(topflag==-1) {
            return -1;
        }
        int tmp = arr[topflag];
        topflag--;
        return tmp;
    }

    static public int size() {
        return topflag+1;
    }

    static public int empty() {
        if(topflag==-1) return 1;
        else return 0;
    }

    static public int top() {
        if(topflag==-1) {
            return -1;
        }
        else return arr[topflag];
    }
}

설명

배열을 이용해서 스택을 구현했다. 구현은 C++과 다르지 않아서 어렵지 않았지만, 아직 자바의 모든 입출력 방식을 아는 것이 아니라서 그 부분에서 시간 초과가 발생했다. 처음에 System.out.println으로 전부 출력했는데, 시간이 오래 걸려서 StringBuilder를 사용했다. StringBuilder로 각 함수의 리턴값과 개행문자를 묶어서 저장해 둔 후, 마지막에 한 번에 출력하도록 했다.

 

스택은 배열을 이용해서 구현했다. 스택의 가장 위에 있는 값을 가리키는 인덱스로 topflag를 선언했다. topflag가 -1이라면 스택이 비어있는 상태임을 나타내고, 스택에 push 되면 1 증가, pop 되면 1을 감소시킴으로써 스택을 구현했다.

'클라우드 스쿨 > 자바' 카테고리의 다른 글

Static, String  (0) 2023.06.26
객체지향 언어  (0) 2023.06.23