단계별로 풀어보기 > 스택 큐 덱 > 제로
https://www.acmicpc.net/problem/10773
앞으로 입력될 정수의 갯수 K가 주어질 때,
입력 된 정수가 0인 경우 가장 마지막으로 쓰여진 값을 지우고,
나머지 정수가 입력될 경우 해당 수를 적는다.
총 입력된 정수의 합을 구하여라

간단한 스택 문제로, 0이 주어지지 않을 때는 push, 0이 주어지고 스택이 비어있을 때 continue, 0이 주어질 때를 경우에는 pop로 나누어 풀이한다.
import java.io.*;
import java.util.Stack;
public class 제로 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int K = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
for(int i=0; i<K; i++){
int N = Integer.parseInt(br.readLine());
if(N != 0){
stack.push(N);
}else if(N == 0 && stack.empty()){
continue;
}
else {
stack.pop();
}
}
int result = 0;
for (Integer i : stack) {
result+=i;
}
bw.write(String.valueOf(result));
bw.flush();
bw.close();
br.close();
}
}
Review
import java.io.*;
import java.util.Stack;
public class 제로_review {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Stack<Integer> stack = new Stack<>();
int K = Integer.parseInt(br.readLine());
for(int i =0; i<K; i++) {
int N = Integer.parseInt(br.readLine());
if (N == 0 && !stack.isEmpty()) {
stack.pop();
} else if (N == 0 && stack.isEmpty()) {
continue;
} else {
stack.push(N);
}
}
int result = 0;
while(!stack.isEmpty()){
result+= stack.pop();
}
bw.write(String.valueOf(result));
bw.flush();
br.close();
bw.close();
}
}
