본문 바로가기
Algorithm

[백준] 10773 - 제로

by jaee_ 2021. 10. 5.

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

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

입력

첫 번째 줄에 정수 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);
    }
}

 

댓글