728x90
문제 10773번
https://www.acmicpc.net/problem/10773
입력받은 값을 vector에 저장해준다. 그리고 벡터의 사이즈 만큼 반복문을 돌려서 0이 있는지 확인한다. 만약 0이라면 해당 인덱스와 최근에 쓴 수의 인덱스를 erase()를 통해 지워준다. 여기서 지운 인덱스 2개를 빼줘야한다. 마지막으로 accumulate로 합을 구해준다.
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int k,n;
int main() {
vector<int> num;
cin >> k;
for (int i = 0; i < k; i++) {
cin >> n;
num.push_back(n);
}
for (int j = 0; j < num.size(); j++) { //size():벡터 크기
if (num[j] == 0) {
num.erase(num.begin() + j); //j번째 인덱스에 있는 원소 삭제(0인거)
num.erase(num.begin() + j - 1); //최근에 쓴 수
j -= 2; //지워진 2개를 인덱스에서 지워줌
}
}
cout << accumulate(num.begin(), num.end(), 0); //0->sum의 초기값
}
벡터.size(): 벡터의 크기
벡터.erase(벡터시작점+지우고 싶은 인덱스): 해당 인덱스에 있는 원소 삭제
accumulate(벡터 처음, 벡터 마지막, 초기값): 처음부터 마지막까지 전체 수를 더한다.
728x90
'백준 > C++' 카테고리의 다른 글
[C++] 백준 1789번 - 수들의 합 (0) | 2024.03.25 |
---|---|
[C++] 백준 10871번 - X보다 작은 수 (0) | 2024.03.24 |
[C++] 백준 4963번 - 섬의 개수 (2) | 2024.03.22 |
[C++] 백준 1697번 - 숨바꼭질 (2) | 2024.03.07 |
[C++] 백준 2178번 - 미로 탐색 (0) | 2024.03.07 |