본문 바로가기
코딩테스트 준비/백준

[백준/BOJ][C++] 10773번 제로

by 스테디코디스트 2023. 8. 21.
반응형

<문제 소개>


<소스 코드>

#include <iostream>
#include <stack>
using namespace std;

int main()
{
	// 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int K;
	cin >> K;

	stack<int> stk;
	int sum = 0;

	for (int i = 0; i < K; i++)
	{
		int x;
		cin >> x;

		if (x == 0)
		{
			sum -= stk.top();
			stk.pop();
		}
		else
		{
			stk.push(x);
			sum += x;
		}
	}

	cout << sum;

	return 0;
}

<풀이과정>

1. K를 입력 받고, 수들을 저장할 stack을 선언, 그리고 합을 저장할 sum도 선언해 준다.

2. K만큼 반복하며 x를 입력받고 x가 0인 경우에는 top을 이용해 stk을 건들지 않으면서 sum에서 해당 값만 빼준다.

3. 이후 stk에서 가장 마지막에 들어온 원소를 pop을 이용해 빼준다.

4. 0이 아닌 경우에는 stk에 x를 push해주고, sum에도 x를 더해준다.

5. 모든 반복이 끝난 뒤 sum을 출력해준다.


<코멘트>

음.. 그냥 쉽게 푼 것 같다!


<제출결과>