개발/백준
[백준] 18870번. 좌표 압축 (C++)
yun000
2025. 1. 8. 00:23
문제
https://www.acmicpc.net/problem/18870
풀이
[unique사용]
vector의 unique사용하면 금방 풀리는 문제이다
정렬 후에 unique를 써야 한다.
sort(vec.begin(), vec.end());
vec.erase(unique(vec.begin(),vec.end()),vec.end());
map<int,int> dic에 숫자별 위치를 저장했다
코드
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
int main()
{
//INPUT
int N; cin >> N;
vector<int>num(N);
vector<int>original(N);
for (int i = 0; i < N; i++) { cin >> num[i]; }
original = num;
//CHECK
sort(num.begin(), num.end());
num.erase(unique(num.begin(), num.end()), num.end());
map<int, int>dic;
for (int i = 0; i < num.size();i++)
{
dic[num[i]] = i;
}
//RESULT
for (int i = 0; i < N; i++)
{
cout << dic[original[i]] << " ";
}
}