https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
int n;
int x[1000002]; //입력받을 배열
vector<int> temp,uni; //temp는 정렬된 배열 저장, uni는 temp에서 중복된 수를 제외한 배열
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin>>n;
for(int i=0;i<n;i++){
cin>>x[i];
temp.push_back(x[i]);
}
sort(temp.begin(),temp.end());
for(int i=0;i<n;i++){
if(i==0||temp[i]!=temp[i-1]) uni.push_back(temp[i]); //중복 삭제
}
for(int i=0;i<n;i++){
cout<<lower_bound(uni.begin(),uni.end(),x[i])-uni.begin()<<" ";
//lower_bound의 반환형은 iterator이므로 uni.begin()을 빼줘야 몇번째 index인지 알 수 있음
}
return 0;
}
'ALG > ALG Solve' 카테고리의 다른 글
[C++] 백준 5585번 - 거스름돈 (0) | 2023.07.14 |
---|---|
C++) 백준 4375번 - 1 (0) | 2023.03.01 |
C++) 백준 2170번 - 선 긋기 (0) | 2023.02.14 |
C++) 백준 1541번 - 잃어버린 괄호 (0) | 2023.02.14 |
C++) 백준1149번 - RGB거리 (0) | 2023.02.06 |