Programing/백준, 프로그래머스(C++)

[C++][백준 10773] 제로

hye3193 2025. 1. 10. 12:10

https://www.acmicpc.net/problem/10773

제출 코드

 

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

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int k, num, sum = 0;
    stack<int> s;
    cin >> k;
    while (k--)
    {
        cin >> num;
        if (num == 0)
            s.pop();
        else
            s.push(num);
    }
    while (!s.empty())
    {
        sum += s.top();
        s.pop();
    }
    cout << sum;
}

 

stack을 이용해서 0이 아닌 경우 차례로 정수를 넣고, 0인 경우 pop을 시켜서 가장 최근에 넣은 수를 지우는 방식이다

스택에 수를 다 넣은 뒤에는 스택이 비어있을 때까지 while loop로 sum에 정수들을 더해주었다