23 Oct 2022

[Java] 백준 10828번: 스택

10828

풀이 방법

스택 구현 문제이다.

배열로 스택을 구현하였다. 리스트로 구현하는 게 더 편할 듯 싶은데 제한 시간이 0.5초라 배열이 적절하다고 생각했다.

풀이 코드

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

public class BOJ_10828_스택 {
	static int[] stack;
	static int index;
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		stack = new int[N];
		index = 0;
		
		for (int i = 0; i < stack.length; i++) {
			String str = br.readLine();
			int res = readOperator(str);
			
			if(res >= -1)
				System.out.println(res);
			
		}
		
	}

	private static int readOperator(String str) {
		int size = str.length();
		
		if(size >= 6) { // operator == push
			stack[index] = Integer.parseInt(str.split(" ")[1]);
			index++;
		} else if(size == 5) { // operator == empty
			return index == 0 ? 1 : 0;
		} else if(size == 4) {
			return index;
		} else if(index == 0) {
			return -1;
		} else if(size == 3 && str.equals("pop")) {
			int num = stack[index-1];
			index--;
			return num;
		} else if(size == 3 && str.equals("top")) {
			return stack[index-1];
		}
		
		return -2;
	}

}
Thank You For Reading
SeungJun Jeon

점점 강해지고 있습니다.

comments powered by Disqus