sort 함수 : 퀵(기본) → 힙(재귀 깊을 때) → 삽입(데이터 적을 때) 의 시간복잡도
_CONSTEXPR20 void sort(const _RanIt _First, const _RanIt _Last) {
_STD sort(_First, _Last, less<>{});
params
# include <algorithm> // sort 함수 라이브러리
sort(arr, arr+len); // 오름차순 (default: less<>)
sort(arr, arr+len, greater<type>()); // 내림차순
배열 변수 arr 이고, 원소의 개수를 len이라 하였을 때 아래와 같다.
sizeof()는 자료형의 크기를 Byte단위로 반환한다. (type(Byte) * len)
고로 sizeof(arr)는 전체 배열의 길이를 Byte 단위로 반환한다.
원소의 개수를 구하려면 타입의 크기(Byte)로 나눈다.
/*
배열의 원소를 인덱싱하고 이를 sizeof 함수에 parse 하여 구할 수도 있으나,
자료형을 명시적으로 sizeof 함수에 parse 하여도 됨
*/
int arr[5] = {0};
len = sizeof(arr)/sizeof(arr[0]); // 배열 전체 Byte 길이 / 타입의 크기
len = sizeof(arr)/sizeof(int);
구조체(struct) 는 서로 다른 타입의 변수들을 하나로 묶는 사용자 정의 자료형이다. 기본 자료형(int, double 등)과 달리 비교 기준이 없으므로, sort() 사용 시 비교 함수를 직접 정의해야 한다.
bool compare(const Score& a, const Score& b) {
if (a.english != b.english) return a.english > b.english;
return a.math > b.math; // 동점 처리
}
const Score& : 읽기 전용 참조 → 값 변경 방지 + 메모리 절약bool operator<(const Score& other) const {
return math > other.math; // '<' 재정의로 내림차순 동작
}
sort()는 기본적으로 < 기준 → operator< 재정의로 정렬 기준 커스터마이징operator에 대해선 씹어먹는 C++ 참고 : https://modoocode.com/202int count[1001] = {0};
int N; cin >> N;
for (int i = 0; i < N; i++)
int ele;
cin >> ele;
cout[ele] = count++; // 출현 횟수 카운팅