반응형
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
문제 설명은 다음과 같다.
이런 문제는 간단하게 풀 수 있어야 한다.
Vector나 Queue 자료 구조를 사용해서, 0이 아닌 수는 다 밀어넣은 다음, 0이면 최근에 넣은 수를 pop 하면 된다.
마지막에는 Vector나 Queue에 남아 있는 애들을 하나씩 pop 하면서 그 수를 다 더해주면 답이 된다.
본인은 Vector 자료 구조를 사용하여 push_back 과 pop_back을 활용했다.
다음은 제출한 C/C++ 코드이다.
#include <algorithm>
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int test_case;
int test;
vector<int> anslist;
cin >> test_case;
for (int i=0;i<test_case;i++){
cin >> test;
if (test==0) anslist.pop_back();
else anslist.push_back(test);
}
cout << accumulate(anslist.begin(), anslist.end(), 0) << '\n';
return 0;
}
반응형
'백준 문제풀이 > 백준 Silver' 카테고리의 다른 글
백준 4949 - 균형잡힌 세상 [C/C++] (0) | 2023.11.02 |
---|---|
백준 9012 - 괄호 [C/C++ (0) | 2023.11.02 |
BOJ 10816 - 숫자 카드2 [C/C++] (0) | 2023.10.30 |
BOJ 10866 - 덱 [C/C++ (0) | 2023.10.30 |
BOJ 11047 - 동전 0 [C/C++] / Greedy Algorithm (0) | 2023.10.30 |