Problem Solving/BOJ

[백준 10773번] [스택] 제로

  • -
728x90
반응형

마지막에 쓴 수를 0이 나오면 지우는 방식이므로 스택을 활용하면 된다.

추가적으로, 이 문제에서 실수한 지점은 for iteration을 활용할 때 조건문의 경우는 한바퀴 돌때마다 그때그때 체크한다는 점이다.

이 점은 파이썬과는 차이가 있으므로 반드시 정리해두어야 한다.

 

위의 알고리즘으로 코드를 구현하면 다음과 같다.

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <cstdlib>

using namespace std;

int main(void){
    int k;
    cin >> k;

    stack<int> data_store;
    for(int i = 0; i < k; i++){
        int temp;
        cin >> temp;
        if (temp == 0){
            data_store.pop();
        }
        else{
            data_store.push(temp);
        }
    }

    int result = 0;
    int len_data = data_store.size();

    for(int i = 0; i < len_data; i++){
        result += data_store.top();
        data_store.pop();
    }

    cout << result << "\n";
    return 0;
}
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.