[백준 10773] 제로

alsry._.112·2023년 10월 3일
0

백준

목록 보기
73/102

🔗문제 풀러가기
단계별로 풀어보기 단계 16의 2번째 문제이다.

문제 분석


Stack 컨테이너를 사용해서 문제를 해결하였다.

코드

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

int main()
{
    stack<int> st;

    int n, sum = 0;
    cin >> n;

    int input;
    for (int i = 0; i < n; i++)
    {
        cin >> input;

        if (input == 0)
        {
            st.pop();
            continue;
        }
        st.push(input);
    }

    while (st.size() > 0)
    {
        sum += st.top();
        st.pop();
    }

    cout  << sum;
}

해석

  1. 입력받은 수 만큼 for문을 돌며 수를 입력받는다.
  2. 입력받은 수가 0이라면 선입후출의 특성을 가지고 있는 stack에 따라 가장 최근에 입력받은 수를 지운다.
  3. 입력받은 수가 0이 아니라면 stack에 입력받은 수를 저장한다.
  4. 그 후 stack의 길이만큼 stack의 top을 sum에 저장하고 지우는 것을 반복한다.
  5. 이렇게 얻은 sum을 출력하면 끝!
profile
소통해요

0개의 댓글