백준 문제풀이

[백준] 10773번 제로 [JAVA]

늦깍이 2022. 9. 11. 13:44

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

 

10773번: 제로

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

www.acmicpc.net


     문제

     문제 풀이

  • 전형적인 스택 문제이다. 0일 경우 pop을 해주고 나머지의 경우 push만 해주면 된다.
  • 푼 방법
    1. stack을 생성한다.
    2. if else 구문을 사용하여 입력된 수가 0인 경우, stack.pop()을 해준다.
    3. 입력된 수가 0 이외의 수을 경우, stack.push()을 해준다.

        JAVA code

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

public class baekjoon10773 {
    public static void main(String[] args) throws IOException {
        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 S = Integer.parseInt(br.readLine());
            if (S == 0)
                stack.pop();
            else
                stack.push(S);
        }
        int result = 0;
        for (int i = 0; i < stack.size();) {
            result = result + stack.pop();
        }
        System.out.println(result);
    }
}

'백준 문제풀이' 카테고리의 다른 글

[백준] JAVA로 백준 입력 받는 방법  (0) 2022.09.14
[백준] 10845번 큐 [JAVA]  (0) 2022.09.13
[백준] 9012번 괄호 [JAVA]  (2) 2022.09.13
[백준] 10828번 스택 [JAVA]  (0) 2022.09.13
[백준] 1874번 스택 수열 [JAVA]  (2) 2022.09.11