독학백수 2023. 9. 25. 08:25
반응형

해당 문제는 Stack으로 풀면 간단하다.

0이 들어올 때, pop을 해주면 된다.

int N;
stack<int> s;
void Intput()
{
	cin >> N;
	for (int i = 0; i < N; i++)
	{
		int data;
		cin >> data;
		
		if 
			(data == 0) s.pop();
		else
			s.push(data);
	}
}

이후 스택에 쌓인 수 만큼 합산 해주고 출력해주면 된다

void Solution()
{
	int sum = 0;
	while (!s.empty())
	{
		sum += s.top();
		s.pop();
	}
	cout << sum;
}

전체소스코드

#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
using namespace std;

int N;
stack<int> s;
void Intput()
{
	cin >> N;
	for (int i = 0; i < N; i++)
	{
		int data;
		cin >> data;
		
		if 
			(data == 0) s.pop();
		else
			s.push(data);
	}
}

void Solution()
{
	int sum = 0;
	while (!s.empty())
	{
		sum += s.top();
		s.pop();
	}
	cout << sum;
}

void Solved() {
	Intput();
	Solution();
}

int main() {
	Solved();
}

반응형