BOJ - 10773번_제로

재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 이렇게 모든 수를 받아 적은 후 그 수의 합을 구하는 프로그램 작성하기


풀이

C++ STL stack을 이용한다.

입력받은 정수가 0일 경우 스택의 top 값만큼 빼고 pop 한다. 0이 아닐 경우에는 스택에 push 해주고 그 값을 더한다.


소스코드

#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int k;
	cin >> k;
	
	int num, sum=0;
	stack<int> st;
	while(k--) {
		cin >> num;
		if(num==0) {
			sum -= st.top();
			st.pop();
		}
		else {
			st.push(num);
			sum += num;
		}
	}
	cout << sum;
}