PS/정렬 알고리즘[Sort]

백준 1015 수열 정렬(c++)

SeungbeomKim 2022. 7. 17. 16:44

https://www.acmicpc.net/problem/1015

 

1015번: 수열 정렬

P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주

www.acmicpc.net

<코드>

#include <iostream>
#include <utility>
#include <algorithm>
#include <vector>
#include <functional>
using namespace std;


int main()
{
	int n;
	cin>>n;
	vector<pair<int,int>>v;
	for(int i=0;i<n;i++)
	{
		int a;
		cin>>a;
		v.push_back(make_pair(a,0));
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(i==j) continue;
		    if(v[j].first>v[i].first) v[j].second++;
			else if(j>i && v[j].first==v[i].first) v[j].second++;  
		}
	}
	for(int i=0;i<v.size();i++)
	{
		cout<<v[i].second<<' ';
	}
}

<풀이과정>

원소가 다른 원소보다 큰 경우를 따지면 된다.

pair벡터에서 벡터의 첫번째 원소가 다른 첫번째 원소보다 크다면 두 번째 원소의 값을 1 증가시켜주면 된다.

하지만, 같은 경우도 고려해야한다. 만약에 같다면, 원소의 위치가 오른쪽에 있다면 두 번째 원소의 값을 1 증가시켜주면 원소를 비내림차순으로 정렬시킬 수 있게 된다. 

'PS > 정렬 알고리즘[Sort]' 카테고리의 다른 글

백준 2805 나무 자르기(c++)  (0) 2022.07.18
백준 2776 암기왕(c++)  (0) 2022.07.18
18870 좌표 압축(c++)  (0) 2022.07.13
백준 20291 파일 정리(c++)  (0) 2022.07.12
백준 1374 강의실(c++)  (1) 2022.07.11