sort() 함수를 내림차순으로 이용하는 방법.
 #include <bits/stdc++.h>
using namespace std;

int n;
int a[1'000'005];

bool compare(const int &a, const int &b){
    return a>b;
}

int main(){
    ios::sync_with_stdio(0); 
    cin.tie(0); 
    cin>>n;
    for(int i=0; i<n; i++) cin>>a[i];
    sort(a,a+n,compare);
    for(int i=0; i<n; i++) cout<<a[i]<<'\n';
}

위의 코드처럼 기본적으로 sort()함수는 오름차순 정렬이기 때문에 내림차순으로 바꾸어 주기 위해서는 compare 함수를 넘겨주어야 한다. 

이때 직접 compare 함수를 정의해서 넘겨줄 수 있다. 

내림차순으로 정렬하기 위해서는

bool compare(const int &a, const int &b){
    return a>b;

}

형태로 compare 함수를 작성해서 넘겨주면 된다. 

이렇게 직접 구현하는것 말고도 기본적으로 

 

https://itguava.tistory.com/67

 

[C++ / STL] sort 함수를 활용한 오름차순 / 내림차순 정렬

blog post Sort 알고리즘 얼마전 현장 코딩 테스트에서 Sort 함수를 활용한 내림차순 정렬을 구현하려고 했는데 키워드가 생각이 안나서 써먹지 못한 경험이 있습니다. 결국은 직접 내림차순 정렬을

itguava.tistory.com

 

greater<>()

les<>()

을 활용해서 compare 함수 부분을 채워줄 수 있다. 

이때 greater<int>() 형으로 쓰는것이 명시적이겠으나 

c++14 부터 타입추론이 가능해지면서 greater<>()형으로  작성해도 된다고 한다. 

더욱 자세한 내용은 위의 블로그 글을 참고해보도록 하자. 

내가 우선적으로 기억해야 할것은 

greater<type>()을 compare 함수로 넘겨주자는 것만 기억하고 코딩테스트 문제에서 sort를 이용할때 내림차순을 구현하는데 활용하도록 하자. 

 

  Comments,     Trackbacks