컴퓨터공학/알고리듬 풀이
백준-정렬 좌표 압축
cyphen156
2025. 4. 30. 11:26
1차원 좌표가 주어진다.
f(x1) = countIF(x1 > Except Equal val( x2 || x3 || xn-1))
제약사항
- 0 < N ≤ 1,000,000
- -10**9 <= Input <= 10**9
주의 사항
없다.
CPP풀이
좌표 압축_18870.cpp
/**
* 백준 좌표 압축_18870
* 1차원 좌표가 주어진다.
* f(x1) = countIF(x1 > Except Equal val( x2 || x3 || xn-1))
*
* 제한사항
*****************************************
* 0 < N ≤ 1,000,000 *
* -10**9 <= Input <= 10**9 *
*****************************************
*
*
*
* 주의
* 없다.
*
* 풀이시간 30분
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int BSearch(int search, vector<int>& copyVector)
{
int left = 0;
int right = size(copyVector) - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (search == copyVector[mid])
{
return mid;
}
else if (search > copyVector[mid])
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return 0;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin >> N;
vector<int> inputs;
for (int i = 0; i < N; ++i)
{
int input;
cin >> input;
inputs.push_back(input);
}
vector<int> copyVector(inputs);
sort(copyVector.begin(), copyVector.end());
copyVector.erase(unique(copyVector.begin(),copyVector.end()),copyVector.end());
for (int i = 0; i < size(inputs); ++i)
{
cout << BSearch(inputs[i], copyVector)<< ' ';
}
cout << '\n';
return 0;
}
모든 예제 코드의 소스파일은 제 개인 깃허브 레포지토리 에 있습니다.
Workspace/알고리듬 풀이 at main · cyphen156/Workspace
Studying . Contribute to cyphen156/Workspace development by creating an account on GitHub.
github.com