문제는 위와 같다.
스택을 이용하면 간단히 해결할 수 있다!
# include <stdio.h>
typedef struct stack_ {
int items[100000];
size_t top;
} stack;
void s_init(stack *s) {
s->top = 0;
}
void s_push(stack *s, int item) {
s->items[s->top++] = item;
}
int s_pop(stack *s) {
int res;
res = s->items[s->top - 1];
s->top--;
return res;
}
int main(void) {
int K;
scanf("%d", &K);
int sum = 0;
stack s;
s_init(&s);
for (int i = 0;i < K;i++) {
int n;
scanf("%d", &n);
if (n) {
s_push(&s, n);
sum += n;
}
else sum -= s_pop(&s);
}
printf("%d\n", sum);
return 0;
}