본문 바로가기
🧑‍💻코딩 테스트/백준 (BOJ)

[코딩테스트/백준 알고리즘] 10773번 : 제로 (Java, 자바 풀이)

by 코코의 주인 2022. 8. 11.

문제

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

 

10773번: 제로

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

www.acmicpc.net


문제 설명


문제 풀이

 "이 문제를 풀 때 스택을 쓰지 않으면 너는 바보야" 라고 온몸으로 외치고 있는 문제다.

 스택에 수를 입력하다 0이 나오면 top에 위치한 수를 제거한다.

 수의 입력이 끝나면 스택에 남은 수의 합을 구한다.


코드

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        int sum = 0;
        Stack<Integer> s = new Stack<>();

        while (k-- > 0) {
            int n = sc.nextInt();
            if (n != 0) {
                s.push(n);
            } else {
                s.pop();
            }
        }
        for(int i : s) {
            sum += i;
        }
        System.out.println(sum);
    }
}

댓글