728x90
문제
https://www.acmicpc.net/problem/18870
사용한 알고리즘
2022.01.11 - [PS/Algorithm] - [알고리즘 개념정리] 1. 정렬 (sort STL), 특정 변수 기준으로 정렬하기
-> 비교함수 정의하기
풀이
- idx, X, X'을 변수로 가지는 구조체 Point와 구조체 배열 생성
- idx에 인덱스 입력, X를 입력받음
- X를 기준으로 오름차순 정렬
- 나의 왼쪽에 있는 원소중에 나보다 크기가 작은 원소의 개수를 변수X'에 저장
- idx를 기준으로 오름차순 정렬
- X'출력
소스코드
#include <iostream>
#include <algorithm>
using namespace std;
//비교함수 정의
// 1. idx, X, X'을 변수로 가지는 구조체 Point와 구조체 배열 생성
struct Point{
int idx; //인덱스
int x; //입력(X)
int y; //출력(X')
}p[1000001];
bool cmp1(const Point &a, const Point &b){
return a.x<b.x;
}
bool cmp2(Point &a, Point &b){
return a.idx<b.idx;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n; cin>>n;
// 2. idx에 인덱스 입력, X를 입력받음
for(int i=0; i<n; i++){
p[i].idx=i;
cin>>p[i].x;
}
// 3. X를 기준으로 오름차순 정렬
sort(p,p+n,cmp1);
// 4. 나의 왼쪽에 있는 원소중에 나보다 크기가 작은 원소의 개수를 변수X'에 저장
p[0].y=0;
for(int i=1,j=0; i<n; i++){
if(p[i].x>p[i-1].x) j++;
p[i].y=j;
}
// 5. idx를 기준으로 오름차순 정렬
sort(p,p+n,cmp2);
// 6. X'출력
for(int i=0; i<n; i++){
cout<<p[i].y<<" ";
}
return 0;
}
728x90
'PS > Baekjoon' 카테고리의 다른 글
[백준/C++] 5525번: IOIOI(S2) (2) | 2022.01.16 |
---|---|
[백준/C++] 2437번: 저울(G3) (0) | 2022.01.14 |
[백준/C++] 9009번: 피보나치(S1) (0) | 2022.01.14 |
[백준/C++] 1431번: 시리얼번호(S3) (0) | 2022.01.12 |
[백준] 맞왜틀 체크리스트 (0) | 2022.01.11 |
댓글