본문 바로가기
알고리즘 문제풀이

[백준 10773] 알고리즘 36일차 : 제로

by SiO2whocode 2020. 8. 3.
728x90

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

 

10773번: 제로

문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 ��

www.acmicpc.net

스택 C++

숫자를 입력받아 스택에 쌓다가 0을 입력받으면 pop하고

마지막에 스택에 쌓여있는 수의 합을 구하는 문제

 

스택 문제가 대체로 평이한 것 같다.

소스코드

#include <iostream>
using namespace std;

class Stack{
public:
    int size;
    int* stack;
    Stack(int maxSize){
        size = 0;
        stack = new int[maxSize];
    }
    void push(int n){
        stack[size++] = n;
    }
    int pop(){
        if(isEmpty()){
            return -1;
        }
        else{
            return stack[--size];
        }
    }
    int getSize(){
        return size;
    }
    bool isEmpty(){
        if(size == 0)
            return true;
        else
            return false;
    }
    int top(){
        if(isEmpty()){
            return -1;
        }
        else{
            return stack[size-1];
        }
    }
};
int main(){
    int k, num, sum = 0;
    cin >> k;
    Stack s = Stack(k);
    for(int i = 0 ; i < k ; i++){
        cin >> num;
        if(num == 0){
            s.pop();
        }
        else{
            s.push(num);
        }
    }
    while(!s.isEmpty()){
        sum += s.pop();
    }
    cout << sum;
    return 0;
}
728x90