본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 10773 제로

by 까망 하르방 2021. 7. 21.
반응형

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

Approach

[STL] Stack을 구현하는 문제입니다.

 

[C++] [STL] Stack

Stack 기본 연산 - LIFO 구조 (Last In First Out) - push(element) : 스택 (뒤쪽에) 원소 추가 - pop() : 스택에 (뒤쪽에) 있는 원소 삭제 (반환 x) - top() : 스택에서 끝에 있는 원소 반환 - empty() : 스택이..

zoosso.tistory.com

 

Stack에 쌓여있는 값들을 파악해서 풀 수도 있지만

Stack 까지 구현하지 않더라도 "0"이라는 숫자(명령어)를 나올 때,

누적값에 제외시켜주면 답은 구할 수 있다.

ex) 3 7 0 1 → 3 + 1 = 4

이전 값만 특정 변수에 저장했다가 "0"이 아닌 경우에만 그 값을 더해주는 것이다.

 

 

물론 Stack 자체를 구현하면 문제 요구대로 풀 수 있다.

- "0"인 경우 스택에서 pop 해주고, 아닌 경우 해당 값을 push 해준다.

- 주어진 n 만큼 수행한 뒤, stack에 남아 있는 수들을 더해준다.


#include <stdio.h>
#include <stack>

using namespace std;

int main() {
       // freopen("input.txt", "r", stdin);
       int n; scanf("%d", &n);
       stack<int> st;
       int val, ans = 0;
       for (int i = 0; i < n; ++i)
       {
              scanf("%d", &val);
              switch (val)
              {
              case 0:
                     st.pop();
                     break;
              default:
                     st.push(val);
                     break;
              }
       }
       while (!st.empty())
       {
              ans += st.top();
              st.pop();
       }
       printf("%d\n", ans);
}

 

반응형

댓글