#include <iostream>
#include <utility> // pair
#include <algorithm> // sort
#include <vector>
using namespace std;
int N, x;
vector<pair<int, int> > sv;
int main(int argc, char** argv){
scanf("%d", &N);
for(int i=0; i<N; i++){
scanf("%d", &x);
sv.push_back(make_pair(x, i)); // 값, 인덱스 - 원래 순서 기억
}
sort(sv.begin(), sv.end()); // 값 기준 정렬
vector<int> v(N);
for(int i=0; i<N; i++){
v[sv[i].second] = i; // 정렬된 인덱스 할당
}
for(int i=0; i<N; i++){
printf("%d ", v[i]);
}
return 0;
}
생각한 것을 구현해내는게 은근 힘들었던 문제.
3번을 생각해내는게 힘들었다. 하나하나 비교해가면서 값을 출력시키는게 너무 비효율적일 것 같아서 고민했는데 음 좀 더 다른 방식을 생각해내는게 항상 너무 힘이 든다.