https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에
www.acmicpc.net
1. 시행착오
답 : 해당원소보다 작은 원소의 갯수
upper_bound - lower_bound 하면 정답이 아니다...
lower-begin 이 정답이다.
2. 전체코드
#include <bits/stdc++.h>
using namespace std;
int n,m;
vector<int> v1,v2;
set<int> s;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
while (n--) {
int temp;
cin >> temp;
v1.push_back(temp);
s.insert(temp);
}
for (auto i : s) {
v2.push_back(i); //중복제거한 벡터
}
sort(v2.begin(), v2.end());
for (auto i : v1) {
cout << lower_bound(v2.begin(), v2.end(), i)
- v2.begin() << " ";
}
return 0;
}
'Algorithm > 이분탐색' 카테고리의 다른 글
백준 1654 랜선자르기 c++ // 이분탐색, parametric search (0) | 2024.01.04 |
---|---|
백준 2295 세수의합 c++ // 이분탐색 발상 (0) | 2024.01.03 |
백준 10816 숫자카드2 c++ // 이분탐색, upper_bound, lower_bound (0) | 2024.01.02 |
백준 1920 수찾기 c++ // 이분탐색 stl (0) | 2024.01.01 |
[맞음] 백준 3273 cpp // 두수의 차 visited 배열활용, 투포, 이분탐색 (0) | 2023.08.14 |