반응형
0) 제목
Hackerrank의 C++ STL 카테고리의 Vector-Erase 문제입니다.
C++ 사용했습니다.
1) 문제설명
n을 입력 받고 n개의 개수 만큼 vector의 인자를 받습니다.
a를 입력받고 a번째 인자를 erase합니다.
a, b를 입력받고 범위 a~b 인자를 erase 합니다.
vector의 size와, 인자들을 차례로 출력합니다.
2) 풀이과정
erase의 두가지 쓰임새를 위한 간단한 문제입니다.
v.erase(iter) 처럼 파라미터를 하나 받는 경우에는 벡터의 iter 위치의 인자를 삭제 합니다.
v.erase(start, end) 처럼 파라미터를 두개 받는 경우에는 [start, end) 의 범위의 인자를 삭제 합니다.
start 이상, end 미만의 범위의 인자를 삭제 한다는 뜻입니다.
그림으로 본다면 이렇습니다.
3) 함수설명
주석 작성했습니다.
4) 코드
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int n; cin >> n; int x; vector<int> v; for(int i=0; i<n; i++){ cin >> x; v.push_back(x); } int a, b; vector<int>::iterator iter = v.begin(); //특정 위치 erase. cin >> a; iter += (a-1); v.erase(iter); //범위를 받아서 범위 만큼 erase. //erase는 v.erase(a, b) 라고 했을때, [a, b) 이다. //a 이상 b 미만의 범위. 이다. cin >> a >> b; iter = v.begin(); v.erase(iter+a-1, iter+b-1); //출력 형태; cout << v.size() << endl; for(iter = v.begin() ; iter!= v.end() ; iter++){ cout << *iter << " " ; } return 0; } | cs |
5) 인증
경로 : Dashboard>C++>STL>Vector-Erase
출처 : https://www.hackerrank.com/challenges/vector-erase
오늘은 vector의 두가지 erase에 대해서
예제를 찾아서
이 문제를 풀어보았습니다.
반응형
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[백준 2750] 수 정렬하기 (버블정렬, 삽입정렬) (0) | 2017.07.28 |
---|---|
[백준 1152] 단어의 개수 (strtok) (2) | 2017.07.27 |
[백준 2577] 숫자의 개수 (0) | 2017.07.26 |
[백준 11720] 숫자의 합 (아스키코드) (0) | 2017.07.25 |
[C++ protected] Rectangle Area (Inheritance) (0) | 2017.07.19 |
[백준 14612] 김식당 (IUPC) (0) | 2017.07.18 |
[C++ 예외처리] Exceptional Server (bad_alloc, exception) (0) | 2017.07.17 |
[C 자료구조] Stack - Simple Text Editor (0) | 2017.07.14 |