백준 단계별로 풀어보기 [스택] 제로
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
[풀이]
0이 입력되면 스택에서 pop을 하고, 그 외의 수는 스택에 push를 한다. 입력이 끝나면 스택에 있는 수를 모두 더해준 뒤 출력한다.
[코드]
#include<iostream>
#include<algorithm>
#include<string>
#include<stack>
int main() {
int k, num, sum = 0;
std::stack<int> s;
std::cin >> k;
for (int i = 0; i < k; i++) {
std::cin >> num;
if (num == 0)
s.pop();
else s.push(num);
}
while (!s.empty()) {
sum += s.top();
s.pop();
}
std::cout << sum;
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[c++] 백준 11050, 11051 이항계수 1, 이항계수 2 (0) | 2021.07.27 |
---|---|
[c++] 백준 1874 스택 수열 (0) | 2021.07.24 |
[c++] 백준 2609, 1934 최대공약수와 최소공배수, 최소공배수 (0) | 2021.07.24 |
[c++] 백준 1541 잃어버린 괄호 (2) | 2021.07.22 |
[c++] 백준 1037 약수 (0) | 2021.07.21 |