개발/백준

[백준] 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]] << " ";
	}

}