최대 1 분 소요

[백준 10773번] 제로

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
 
public class 백준_손수경_정답_10773 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.valueOf(br.readLine());
        int sum = 0;
        Stack<Integer> nums = new Stack<Integer>();
 
        for (int i = 0; i < n; i++) {
            int number = Integer.valueOf(br.readLine());
            if (number == 0) {
                nums.pop();
            }
            else {
                nums.push(number);
            }
        }
        
        for (int num : nums) {
            sum += num;
        }
        bw.write(sum + "\n");
        bw.close();
    }
}
 
cs


Stack 클래스

사전상의 정의로 쌓다 라는 의미로, 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료구조라고 할 수 있다.

  • push(value) : 값을 넣는데 사용
  • pop() : 스택된 값 제거
  • clear() : 스택된 값 전체 제거

이 문제를 푸는데 Stack 클래스가 사용된 이유는 0이 나오면 그 전에 스택되어 있던 값을 pop() 메서드를 사용해서 제거할 수 있기 때문이다. 0이 나온 것이 아니라면 push(number) 을 사용해서 값을 추가해주면 된다.

댓글남기기