반응형
출처: https://www.acmicpc.net/problem/10773
Approach
[STL] Stack을 구현하는 문제입니다.
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);
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 10828 스택 (0) | 2021.07.22 |
---|---|
[BOJ] 백준 2869 달팽이는 올라가고 싶다. (0) | 2021.07.21 |
[BOJ] 백준 1712 손익분기점 (0) | 2021.07.05 |
[BOJ] 백준 2504 괄호의값 (0) | 2021.06.05 |
[BOJ] 백준 21610 마법사 상어와 비바라기 (2) | 2021.05.30 |
댓글