Shiny Sky Blue Star

백준 문제 풀이/백준 (JAVA)

JAVA 백준 10773 제로 (스택)

gamja00 2024. 7. 2. 00:20

 

 

https://www.acmicpc.net/problem/10773


문제

  1. 첫째 줄에 정수 K(1 <= K <= 100000) 입력.
  2. 둘째 줄부터 K개의 줄에 정수가 1개씩 주어짐. (0 <= 정수 <=1000000).
  3. 입력된 정수가 0일 경우 가장 최근에 입력한 수를 지움.
  4. 입력된 정수가 0이 아닐 경우 입력한 수를 저장.
  5. 정수가 0일 경우에 반드시 지울수 있는 수가 있음. (오류 발생 경우 없음).
  6. 최종적으로 저장된 수의 합을 출력.

 

완성 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int sum = 0;

        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){
                sum -= stack.pop();
            }
            else{
                stack.add(n);
                sum +=n;
            }
        }

        br.close();

        System.out.println(sum);
    }
}