응애개발자
article thumbnail
728x90

문제

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

 

접근 방법

  1. 재현이는 재민이가 잘못된 수를 외칠때마다 0을 외쳐서 가장 최근에 쓴 수를 지우는 문제입니다.
  2. 따라서 스택에 넣고 0을 외칠때마다 스택에서 pop하여 없애줍니다.
  3. 또한 스택에 쌓여있는 것들을 누적하여 sum값을 구하면 됩니다.

 

코드

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

public class Main {
    private static StringBuilder sb;
    private static BufferedReader br;
    private static StringTokenizer st;
    private static int N;
    private static Stack<Integer> stack = new Stack<>();
    private static int sum = 0;

    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        N = Integer.parseInt(br.readLine());

        for(int i = 0 ; i < N ; i++){
            int input = Integer.parseInt(br.readLine());

            stackProcess(input);
        }
        process();
    }

    //스택 쌓기 실행
    public static void stackProcess(int input) {
        if(input==0){
            stack.pop();
            return;
        }

        stack.push(input);
    }

    //출력
    public static void process(){
        while (!stack.isEmpty()){
            sum+=stack.pop();
        }

        System.out.println(sum);
    }


    public static void main(String[] args) throws Exception {
        input();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!