백준

백준 10773: 제로(java)

unhyepnhj 2024. 7. 12. 20:14

문제


풀이

 

'가장 최근에 쓴 수' 라는 표현에 주목하자. 가장 최근에 입력된 값을 불러오려면 당연히 후입선출 구조의 스택을 사용해야 한다.

정수가 0일 경우에 가장 최근에 쓴 수를 지우는 것은 pop, 아닐 경우 해당 수를 쓰는 것은 push이다.

스택을 완성한 뒤, for문과 get() 메소드를 이용해 스택 내부 모든 원소들의 합을 구해 출력한다.

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

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
		Stack<Integer> stack=new Stack<>();
		
		int K=Integer.parseInt(in.readLine());
		for(int i=0; i<K; i++) {
			int input=Integer.parseInt(in.readLine());
			if(input==0)
				stack.pop();
			else
				stack.push(input);	
		}
		
		int sum=0;
		for(int i=0; i<stack.size(); i++) {
			sum+=stack.get(i);
		}
		
		System.out.println(sum);
	}
}