728x90
반응형
https://www.acmicpc.net/problem/2605
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> numbers(n);
for (int i = 0; i < n; i++) {
cin >> numbers[i];
}
vector<int> line;
for (int i = 0; i < n; i++) {
line.insert(line.begin() + numbers[i],i+1);
}
reverse(line.begin(),line.end());
for(vector<int>::iterator it=line.begin();it!=line.end();++it){
cout << *it << ' ';
}
return 0;
}
* 연산자를 사용해 it이 가리키는 원소
실제 포인터가 아닌 *연산자를 overloading해서 포인터처럼 동작하게 한 것
입력 값을 넣고 reverse없이 그냥 출력을 해보면 1 3 5 2 4로 나올 것이다
iterator insert (const_iterator position, const value_type& val);
position이 begin() 즉, vector의 0번에서 부터 시작되고 insert 특성상 해당 위치에 있는 값은 뒤로 밀려나기에 1 3 5 2 4가 나오는 것이다.
먼저, begin()+0 = 1 / begin()+1 = 2 까지 들어가고 begin()+1 = 3 여기서 1번 위치에 2가 있었으므로 뒤로 밀려나면서 해당 위치에 3이 들어가는 것. 이걸 반복하기에 1 3 5 2 4가 나온다
728x90
반응형
'Baekjoon > Bronze' 카테고리의 다른 글
Baekjoon 2292.벌집 c++ [Bronze II] (0) | 2024.11.10 |
---|---|
Baekjoon 2231. Digit Generator c++ [Bronze II] (0) | 2024.11.06 |
Baekjoon 10809. 알파벳 찾기 c++[Bronze II] (0) | 2024.11.03 |
Baekjoon 1152. 단어의 개수 c++[Bronze II] (0) | 2024.11.03 |
Baekjoon 18698. The Walking Adam c++[Bronze IV] (0) | 2024.10.24 |