https://www.acmicpc.net/problem/10773
이 문제는 스택을 사용하는 문제이다.
Stack<String> stack = new Stack<String>();
stack.push("one");
stack.push("two");
stack.push("three");
System.out.println(stack.toString());
// 출력
[one, two, three]
System.out.println(stack.pop());
System.out.println(stack.toString());
// 출력
three
[one, two]
// 현재 스택 값 : [one, two]
System.out.println(stack.peek());
System.out.println(stack.toString());
// 출력
two
[one, two]
여기서 초반에는 들어오는 값을 무조건 넣는 로직을 작성하고 if문을 통하여 0값이면 pop하도록 하였다. 하지만, 이렇게 하면 0을 넣고 0을 빼는 것이므로 소용이 없다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int K = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < K; i++) {
int input = Integer.parseInt(br.readLine());
if (input != 0) {
stack.push(input);
}else {
stack.pop();
}
}
int sum = 0;
for (int i = 0; i < stack.size(); i++) {
sum = sum + stack.get(i);
}
System.out.println(sum);
br.close();
}
}