백준 10828 스택

연어는결국강으로·2022년 10월 26일
0

알고리즘 공부

목록 보기
8/15

나는 이걸 ArrayList로 구현을 했는데(양심상 Stack을 그대로 쓰는건 좀 그랬다.) 사람들이 제출한 답안을 보니 그냥 Stack을 썻다.
자바에서는 Stack을 어떻게 구현했을까? 하고 살펴보니 이 사람들도 JDK1.0부터 내려온지라 Vector를 확장하여 쓰는 잘못을 하고 있었다고 한다. 그래서 ArrayDeque라는 친구를 쓰는 것을 권장한다.

ArrayDeque 사용방법 링크 : https://github.com/wjdrbs96/Today-I-Learn/blob/master/Java/Collection/Queue/ArrayDeque%EB%9E%80%3F.md

package stack;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class No10828 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		ArrayList<Integer> arr = new ArrayList<Integer>();
		No10828 stack = new No10828();
		int count = Integer.parseInt(br.readLine());

		for (int i = 0; i < count; i++) {
			String input = br.readLine();
			stack.statement(arr, input);
		}

	}

	public void statement(ArrayList<Integer> arr, String input) throws Exception {
		if ("pop".equals(input)) {
			System.out.println(pop(arr));
		} else if ("top".equals(input)) {
			System.out.println(top(arr));
		} else if ("size".equals(input)) {
			System.out.println(size(arr));
		} else if ("empty".equals(input)) {
			System.out.println(empty(arr));
		} else {
			push(arr, input);
		}
	}

	public int pop(ArrayList<Integer> arr) {
		if (arr.size() == 0) {
			return -1;
		}
		int result = arr.get(arr.size() - 1);
		arr.remove(arr.size() - 1);
		return result;
	}

	public int top(ArrayList<Integer> arr) {
		if (arr.size() == 0) {
			return -1;
		}
		return arr.get(arr.size() - 1);
	}

	public int size(ArrayList<Integer> arr) {
		return arr.size();
	}

	public int empty(ArrayList<Integer> arr) {
		if (arr.size() == 0) {
			return 1;
		} else {
			return 0;
		}
	}

	public void push(ArrayList<Integer> arr, String input) {
		int number = Integer.parseInt(input.substring(5));
		arr.add(number);
	}
}

0개의 댓글