/ BOJ

BOJ_10773_제로_JAVA

문제 : 제로

링크 : BOJ_10773_제로

접근 방식

스택을 이용해서 값을 찾아내는 문제이다. 주어지는 값을 차근차근 stack에 저장하다가, 0을 만나면 pop 시킨다. 그러고 나서 stack에 남은 수를 모두 더해서 출력하면 된다.

풀이 방법

앞선 문제, 10828_스택에서 만들었던 ArrayList를 이용한 스택 메서드를 가져와서 사용했다. 주어지는 수를 읽어와서 stack에 push한다. 입력값으로 0이 들어오면 stack에서 pop 시켜 가장 최근의 값을 꺼낸다. stack의 길이가 0이면 아무 행동도 안 하도록 하여 exception을 막는다.

소스 코드

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

public class BOJ_10773_제로 {
	static ArrayList<Integer> stack = new ArrayList<>();
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

		int K = Integer.parseInt(in.readLine());

		for(int i=0;i<K;i++) {
			int num = Integer.parseInt(in.readLine());
			if(num == 0) {
				pop();
			}else
			{
				push(num);
			}
		}
		int answer = 0;
		for(int i=0;i<stack.size();i++) {
			answer += stack.get(i);
		}

		System.out.println(answer);

	}


	public static void push(int X) {
		stack.add(X);
	}

	public static void pop() {
		if(stack.size() == 0) {
		}else {
			stack.remove(stack.size()-1);
		}
	}

	public static void size() {
		System.out.println(stack.size());
	}

	public static void empty() {
		if(stack.size() == 0) {
			System.out.println("1");
		} else {
			System.out.println("0");
		}
	}

	public static void top() {
		if(stack.size() == 0) {
			System.out.println("-1");
		}else {
			System.out.println(stack.get(stack.size()-1));
		}
	}
}