백준

[백준][C++]18870

군필복학컴공롯데토트넘골스노엘갤러거이병건팬 2024. 3. 27. 20:42

배열에서 중복된 원소를 없앤 후 정렬을 해주면 된다고 생각함.

그리고 미리 또다른 배열을 만들어 입력 좌표를 미리 저장한 후 정렬/중복원소 삭제된 배열에서 찾는 알고리즘을 생각해냈다.

또 찾을 때 이중for문을 이용하기 보단 vector stl에 있는 find를 쓸려고 했고, 사용해보니 시간 초과가 났다. 그리서 lower_bound를 사용하여 풀었다.

 

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main()
{
	int N;
	cin >> N;
	vector <int> v(N);
	
	for(int i=0;i<N;i++){
		cin >> v[i];
	}
	vector<int> v2 = v;

	sort(v.begin(),v.end());
	v.erase(unique(v.begin(), v.end()), v.end());


for(int i=0;i<N;i++){
	int k=v2[i];
     cout << lower_bound(v.begin(), v.end(), k) - v.begin() << ' '; 
    
}


	return 0;
	
}

'백준' 카테고리의 다른 글

[백준][C++]10816  (0) 2024.03.30
[백준][C++]11866  (0) 2024.03.19
[백준][C++]2164  (2) 2024.03.18
[백준][C++]11659  (1) 2024.03.17
[백준][C++]17626  (2) 2024.03.15