이번 문제 또한 스택의 기본적인 구조만 알고 있다면 메서드를 통해서 간단하게 구현할 수 있다.
import java.io.*;
import java.util.Stack;
public class S10773 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<>();
int sum = 0;
int K = Integer.parseInt(br.readLine());
while(K --> 0) {
int input = Integer.parseInt(br.readLine());
if(input != 0)
stack.push(input);
else
stack.pop();
}
for(int tmp : stack)
sum += tmp;
System.out.println(sum);
}
}
재현이가 부른 수가 0이 아닐 땐, 스택에 저장하고, 0인 경우엔 LIFO 구조인 스택을 이용하여 최근에 넣은 숫자를 빼면 된다.
마지막으로 sum 변수에 stack의 합계를 구하고 출력한다.
'알고리즘 분류 > 스택 알고리즘' 카테고리의 다른 글
에디터 1406 JAVA (0) | 2023.04.09 |
---|---|
스택 수열 1874 JAVA (0) | 2023.04.08 |
4949 균형잡힌 세상 JAVA (0) | 2023.04.06 |
9012 괄호 JAVA (0) | 2023.04.06 |
10828 스택 JAVA (0) | 2023.04.06 |