🔗문제 풀러가기
단계별로 풀어보기 단계 13의 11번째 문제이다.
unique함수와 lower_bound을 함수를 활용하여 문제를 해결하였다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> vec;
vector<int> vec2;
for (int i = 0; i < n; i++)
{
long input;
cin >> input;
vec.push_back(input);
vec2.push_back(input);
}
sort(vec.begin(), vec.end());
vec.erase(unique(vec.begin(), vec.end()), vec.end());
for (int i = 0; i < n; i++)
{
cout << lower_bound(vec.begin(), vec.end(), vec2[i]) - vec.begin() << " ";
}
}
unique(x,y)함수는
x부터 y까지 중복된 값이 나온 값을 하나 빼고 나머지는 맨뒤로 보낸 후 그 인덱스를 리턴하는 함수이다
lower_bound(시작값, 종료값, 찾는 값) 함수는
찾는 값보다 같거나 큰 값을 리턴해주는 함수이다.
lower_bound(vec.begin(), vec.end(), vec2[i]) - vec.begin()을 해주면
vec에서의 vec2[i]의 위치이다.