알고리즘

백준 10773번 제로 (JAVA)

박카스마시며코딩 2023. 12. 27. 18:59

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

 

10773번: 제로

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

www.acmicpc.net

 

저는 스택을 통해 문제를 풀었습니다.

스택으로 이전의 값을 저장하고, 0이라면 꺼내고, 다른 숫자면 stack에 넣고 마지막에 stack에 있는 모든 값의 합을 출력하여 풀었습니다.

 

package BOJ.etc;

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

public class BOJ_10773 {
    private static final int POP = 0;
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        Stack<Integer> stack = new Stack<>();
        for(int i = 0 ; i < n ; i++){
            int num = Integer.parseInt(br.readLine());
            if(num == POP){
                stack.pop();
            }else{
                stack.add(num);

            }
        }
        int sum = 0;
        while(!stack.isEmpty()){
            sum += stack.pop();
        }
        System.out.println(sum);
    }
}

'알고리즘' 카테고리의 다른 글

백준 1309번 동물원 (JAVA)  (0) 2023.12.29
백준 2169번 로봇 조종하기 (JAVA)  (0) 2023.12.28
백준 15810번 풍선 공장 (JAVA)  (0) 2023.12.26
백준 9465번 스티커 (JAVA)  (1) 2023.12.25
백준 2776번 암기왕 (JAVA)  (0) 2023.12.24