백준 10773

윤재학·2022년 6월 27일

백준

목록 보기
2/8
#include<iostream>
#include<stack>
using namespace std;

int main()
{
	stack<int> Stack;
	int K;
	int num;
	int stackSize;
	int sum = 0;

	cin >> K;  // 정수 K 입력
	
	for (int i = 0; i < K; i++)
	{
		cin >> num;

		if (num == 0)
		{
			Stack.pop();  // 0 이면 지워준다.
		}
		else
		{
			Stack.push(num); // 0 이 아니면 num 넣어준다 ! 
		}
	}
	// 최종적으로 적어 낸 수의 합을 출력한다.
	stackSize = Stack.size(); 
	for (int i = 0; i < stackSize; i++)
	{
		sum += Stack.top();  // 스택에 있는 수를 sum에 더해주고 

		Stack.pop(); // 뺴주기 반복!
	}
	cout << sum;

	return 0;
}

정수 K를 입력받고, K개의 숫자를 입력 할수 있게 한다.
숫자를 입력받는 도중 0이 나오면, 0이 나오기 전의 숫자를 삭제한다.
입력받을 정수의 개수 K를 입력받고, K번만큼 숫자들을 입력받는다.

여기서 입력 숫자가 0이면 스택에 가장 위에 있는 숫자를 빼준다.
0을 입력받기 전 마지막으로 입력받은 숫자를 스택에서 제거한다.
입력받은 숫자가 0이 아니라면 스택에 저장한다.

스택에 변수를 다 저장하는 과정을 거치고,
스택에 있는 숫자를 하나씩 꺼내 더하고, 출력해주었다.

profile
노력하자 즐겁게 개발할수 있는 환경을 위해

0개의 댓글