문제 : https://www.acmicpc.net/problem/10773
입력
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000)
이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다.
정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다.
출력
재민이가 최종적으로 적어 낸 수의 합을 출력한다. 최종적으로 적어낸 수의 합은 231-1보다 작거나 같은 정수이다.
나의 풀이
package week09;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Zero {
static BufferedReader br;
public static void main(String[] args) throws IOException {
Stack<Integer> stack = new Stack<>();
br = new BufferedReader(new InputStreamReader(System.in));
int k = Integer.parseInt(br.readLine());
// 입력받은 k개의 수만큼 반복
for (int i = 0; i < k; i++) {
int temp = Integer.parseInt(br.readLine()); // k번째 줄에 주어지는 정수를 입력받기
if (temp == 0) { // 입력받은 수가 0이라면 pop()
stack.pop();
}else{ // 입력받은 수가 0이 아니라면 push();
stack.push(temp);
}
}
int sum = 0 ;
for (int a : stack) { // stack에 있는 수 더하기
sum += a;
}
System.out.println(sum);
}
}
'Algorithm' 카테고리의 다른 글
[백준] 9012 - 괄호 (0) | 2021.10.05 |
---|---|
[프로그래머스] 완주하지 못한 선수 - Java (0) | 2021.08.21 |
[프로그래머스] SQL 고득점 Kit 문제 풀이 (0) | 2020.11.11 |
댓글