본문 바로가기

알고리즘 풀이(JAVA)/백준

[백준] 문제번호 10773 (제로)(java)

 

<문제 10773 - 제로>

 

[문제]

  

[답안]

import java.util.Scanner;
import java.util.Stack;

// 스택 사용
public class Main{
    public static void main(String args[]){

        Scanner sc = new Scanner(System.in);
        Stack<Integer> stack = new Stack<Integer>();// 스택 선언

        int k = sc.nextInt(); // k개수 입력받기
        int sum = 0; // 합계를 계산할 변수 초기화

        for (int i = 0; i < k; i++) {
            int a = sc.nextInt(); // k개수만큼 a입력받기

            if (a == 0){ // '0'이 입력되었을때
                sum = sum - stack.peek();
                stack.pop();
            }else {
                sum = sum + a;
                stack.push(a);
            }
        }
        System.out.println(sum);
    }
}

- push(input) : input값을 stack에 넣어준다.

- pop : 맨 위 값 return + 동시에 제거

- peek : 맨 위 값 return

- isEmpty() : stack이 비어있으면 true, 아니면 false

- size() : stack이 가지고 있는 원소의 개수를 보여준다.