22. Vector-Erase
[ 난이도: Easy | 분야: STL ]
1. 내용 정리
N개의 정수로 이루어진 벡터가 있다고 가정하자. 그 다음, 2개의 쿼리가 주어진다.
첫 번째 쿼리에는, 벡터 내에서의 위치를 나타내는 1 개의 정수가 주어진다.
벡터의 이 위치에 있는 정수를 지워야 한다.
다음 쿼리에는 2 개의 정수가 주어지는데 벡터의 범위가 주어진다.
범위 안의 요소들은 제거해야 한다. 두 번째 쿼리는 첫 번째 쿼리가 실행된 이후에 진행된다.
아래는 유용한 벡터 함수이다.
- erase(int position);
해당하는 위치의 요소를 제거한다.
v.erase(v.begin()+4); // Erase the fifth element
- erase(int start, int end);
지정된 범위의 요소를 제거한다.
v.erase(v.begin()+2, v.begin()+5);
2. 과제
입력 형식
입력의 첫 번째 줄은 정수 N을 포함한다. 다음 줄은 N개의 공백으로 구분된 정수들을 가지고 있다.
세 번째 줄은 단일 정수 x를 포함하고 있는데, 이는 벡터에서 제거해아 하는 요소의 위치를 가지고 있다.
네 번째 줄은 두 정수 a와 b를 가지고 있고, 제거해야 할 요소들의 범위를 가지고 있다.
제약 사항
N은 1보다 크거나 같고 10^5보다 작거나 같다.
x는 1보다 크거나 같고 N보다 작거나 같다.
a는 1보다 크거나 같고 b는 a보다 크고 N보다 작거나 같다.
출력 형식
벡터의 크기를 첫 번째 줄에 출력하고 두 번째 줄에는 남은 벡터의 요소들을 공백으로 구분하여 출력해라.
입력 예시
6
1 4 6 2 8 9
2
2 4
출력 예시
3
1 8 9
설명
첫 번째 쿼리를 통해 벡터의 두 번째 요소를 제거했고, 그 수는 4이다.
그 후, 수정된 벡터는 {1 6 2 8 9}이다. 그 다음 2~4 범위의 숫자를 제거하고 싶은데 이는 2번째 3번째 수를 제거한다는 것이다.
그 이후 6과 2가 제거되어 {1 8 9}를 얻었다.
문제
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
return 0;
}
정답
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int n; // number of integers
cin >> n;
vector<int> v;
for(int i=0;i<n;i++) {
int temp; // cin integer
cin >> temp;
v.push_back(temp);
}
int x; // Index of erased element
cin >> x;
v.erase(v.begin()+x-1);
int a; int b; // Range of erased element
cin >> a >> b;
v.erase(v.begin()+a-1,v.begin()+b-1);
int size = v.size();
cout << size << endl;
for(int i;i < size; i++) {
cout << v[i] << " ";
}
return 0;
}
©️ Hackerrank. All Rights Reserved.
'프로그래밍 언어 > C, C++' 카테고리의 다른 글
[Hackerrank] 24. Sets-STL (0) | 2024.02.20 |
---|---|
[Hackerrank] 23. Lower-Bound STL (0) | 2024.02.20 |
[Hackerrank] 21. Vector-Sort (0) | 2024.02.19 |
[Hackerrank] 20. Abstract Classes - Polymorphism (0) | 2024.02.17 |
[Hackerrank] 19. Virtual Functions (0) | 2024.02.16 |