728x90
문제
숫자를 입력 받아 0이 입력으로 들어오면 이전 숫자를 지우고
최종적으로 남아 있는 값들의 합을 구하라
접근 방식
스택에 입력값을 계속 push하면서 입력값이 0인 경우에만
저장하지 않고 가장 최근에 저장된 값을 pop 해준다.
합은 스택을 forEach문을 돌리거나 pop으로 꺼내면서 더해준다.
풀이
public class Main {
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 number = Integer.parseInt(br.readLine());
if (number == 0) {
stack.pop();
} else {
stack.push(number);
}
}
int sum = 0;
for (int s : stack) {
sum += s;
}
bw.write(sum + "");
bw.flush();
}
}
'Java > Algorithms' 카테고리의 다른 글
[백준] 2493번 : 탑 (0) | 2023.10.03 |
---|---|
[백준] 1874번 : 스택 수열 (0) | 2023.10.02 |
[백준] 10828번 : 스택 (0) | 2023.10.01 |
[백준] 1158번 : 요세푸스 문제 (0) | 2023.10.01 |
[백준] 5397번 : 키로거 (0) | 2023.09.29 |