-

[BOJ - JAVA] 10773 - 제로(스택) 본문

백준 문제 풀이

[BOJ - JAVA] 10773 - 제로(스택)

흣차 2021. 10. 24. 23:18
728x90
반응형

# 주소

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

 

10773번: 제로

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

www.acmicpc.net

 

# 문제

 

# 문제 해설 및 코드 리뷰

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        Stack<Integer> stack = new Stack<Integer>();
        int n = scan.nextInt();
        int sum = 0;
        while(n-- > 0){
            int x = scan.nextInt();
            if(x != 0){
                stack.push(x);
                sum += x;
            }else if(x == 0){
                sum -= stack.peek();
                stack.pop();
            }
        }
        System.out.println(sum);
    }
}

스택의 가장 기본적인 개념을 묻는 문제입니다.

정수를 입력받고 그 수가 0이면 수를 더하고 0이 아니면 마지막에 더해졌던 숫자를 빼는 형식으로 푸시면 됩니다.

stack에서 데이터를 입력하는 메소드는 push를 이용합니다. 그리고 제거할때는 pop을 쓰며 가장 최근의 값은

peek를 통해 조회할 수 있습니다. 

stack은 기본적으로 선입선출의 구조를 가지고 있기 때문에 먼저 입력받은 데이터가 나갈 수도 있는 자료구조입니다.

728x90
반응형
Comments