import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class B10733 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int input_num = Integer.parseInt(br.readLine());
Stack<Integer> sta = new Stack<Integer>();
int result = 0;
for(int i = 0 ; i < input_num ; i++) {
int num = Integer.parseInt(br.readLine());
if(num == 0 ) {
sta.pop();
}else {
sta.push(num);
}
}
while(!sta.empty()) {
result += sta.pop();
}
System.out.println(result);
}
}
이전에 포스팅한 스택에 대해서 알고 있었기 때문에 쉽게 풀 수 있는 문제였다.
먼저 BufferedReader로 받은 값은 String 타입을 갖기 때문에 원하는 값으로 만들기 위해 형변환을 했다.
메서드를 이용하기 위해 Stack클래스를 객체로 만들어서 사용했다.
그래서 입력받은 값이 0일 경우 최근에 입력된 값을 빼고, 0이 아닌 경우에는 입력받은 값을 Stack에 넣어준다.
하지만 Stack에 있는 값을 합하는 과정에서 어려움이 있었다. for(int i = 0; i < sta.size(); i++)을 사용했는데 sta.size()만큼 for문이 조건을 수행하지 않고 끝나서 답을 얻지 못했다. 그래서 while문을 사용했더니 원하는 답을 얻을 수 있었다.
최종적으로 제출을 했더니 처음으로 출력 초과라는 결과를 받았다. 알고 보니 디버깅용으로 따로 출력을 하나 해놨는데 그게 문제였나보다. 그래서 그걸 지웠더니 깔끔하게 맞았다.
'문제풀이 > 백준' 카테고리의 다른 글
백준 1715. 카드 정렬하기(JAVA) (0) | 2022.03.14 |
---|---|
백준 1927. 최소 힙(JAVA) (0) | 2022.03.13 |
백준 10828. 스택(JAVA) (0) | 2022.03.10 |
백준 8958. OX퀴즈(JAVA) (0) | 2022.03.08 |
백준 11399. ATM(JAVA) (0) | 2022.03.07 |