BOJ - 10773 - 제로
문제
문제 개념
- 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000)
- 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 “0” 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다.
- 정수가 “0”일 경우에 지울 수 있는 수가 있음을 보장할 수 있다.
구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <vector>
using namespace std;
// 0이 들어오면 최근에 입력한 수를 지운다.
// answer은 스택에 쌇인 수를 모두 더한 것이다.
int main()
{
vector<int> VectorStack;
int num;
int answer = 0;
cin >> num;
for(int i=0; i < num; i++)
{
int temp;
cin >> temp;
if(temp == 0)
VectorStack.pop_back();
else
VectorStack.push_back(temp);
}
for(auto el : VectorStack)
answer += el;
cout << answer << endl;
return 0;
}
SOL
- 입력을 받을 때 0인지 구분
- 조건에 따라 push & pop