마지막에 쓴 수를 0이 나오면 지우는 방식이므로 스택을 활용하면 된다.
추가적으로, 이 문제에서 실수한 지점은 for iteration을 활용할 때 조건문의 경우는 한바퀴 돌때마다 그때그때 체크한다는 점이다.
이 점은 파이썬과는 차이가 있으므로 반드시 정리해두어야 한다.
위의 알고리즘으로 코드를 구현하면 다음과 같다.
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <cstdlib>
using namespace std;
int main(void){
int k;
cin >> k;
stack<int> data_store;
for(int i = 0; i < k; i++){
int temp;
cin >> temp;
if (temp == 0){
data_store.pop();
}
else{
data_store.push(temp);
}
}
int result = 0;
int len_data = data_store.size();
for(int i = 0; i < len_data; i++){
result += data_store.top();
data_store.pop();
}
cout << result << "\n";
return 0;
}