새로운 수의 삽입과 삭제가 한쪽 끝에서만 일어나고 있기 때문에 stack이라고 생각할 수 있다.
중요한건 맨 뒤 rear 이기 때문에 rear쪽에서의 변화만 잘 생각해주면 쉽게 구현 가능하다!
#include <stdio.h>
int arr[100001];
int stack[100001];
int main(void)
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&arr[i]);
}
int i=1;
int rear=1;
while(i<=n)
{
if(arr[i]!=0)
{
stack[rear]=arr[i];
rear++;
}
else //pop 해줘야함
{
stack[--rear]=0;
}
i++;
}
int add=0;
for(int i=1;i<=rear;i++)
{
add+=stack[i];
}
printf("%d",add);
}