본문 바로가기
카테고리 없음

[C] 10773: 제로

by soeayun 2023. 7. 30.

새로운 수의 삽입과 삭제가 한쪽 끝에서만 일어나고 있기 때문에 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);
    
    
  }