이문제 좋은단어 문제와 똑같은 stack을 사용했던 문제랑 완전히 똑같아서 쉽게 풀었다.
스택에 넣을까말까 하다가 조건에 맞으면 넣고 아니면 pop해버리고
방법은
두가지 다 가능함.
#include <iostream>
#include <deque>
#include <numeric>
using namespace std;
#define endl "\n"
int n, m;
deque<int> dq;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for (int i = 0; i < n; ++i)
{
cin >> m;
if (m != 0) dq.push_back(m);
else if (m == 0 && dq.size() != 0) dq.pop_back();
}
cout << accumulate(dq.begin(), dq.end(), 0) << endl;
return 0;
}
#include <iostream>
#include <stack>
using namespace std;
#define endl "\n"
int n, m;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
stack<int> st;
for (int i = 0; i < n; ++i)
{
cin >> m;
if (m != 0) st.push(m);
else if (m == 0 && st.empty() == false) st.pop();
}
int sum = 0;
while (st.empty() == false)
{
sum += st.top();
st.pop();
}
cout << sum << endl;
return 0;
}