https://www.acmicpc.net/problem/1427
##문제 풀기 전 내가 알고 있었어야 할 개념:
※ C++에서 QuickSort 헤더 라이브러리 사용 방법 :
1_1) #include <algorithm>
1_2) 전역 함수 구현 부 선언
1_3) qsort() 메소드를 main()내에 사용
=> qsort(arr, arr_size, sizeof(int), compare);
매개변수 :
- 배열 포인터 : arr
- 배열 크기 : arr_size
- 배열 자료형의 크기 : sizeof(자료형)
- ★compare: 비교 함수(compare function)의 이름입니다
.이 함수는 qsort가 정렬을 수행할 때 요소들을 비교하는 데 사용됩니다.
일반적으로 사용자가 직접 구현해야 하며, 함수 포인터로 전달됩니다.
이 함수는 두 개의 const void* 타입의 인자를 받아서 비교한 후,
정렬 순서에 따라 음수, 양수, 또는 0을 반환해야 합니다.
결론 : 일단은 사용 작동 원리보다는 암기를 하여 자주 사용하는 쪽을 채택해라.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#include <iostream>
#include <algorithm>
#define SIZE 10 //자리수 10
using namespace std;
//큰 값 순으로 정렬
int compare(const void* a, const void* b) {
return (*(int*)b - *(int*)a);
}
//작은 값 순으로 정렬
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int N,result=0;
int arr[SIZE];//1,000,000,000의 자리수 : 10
int cnt = 0;
cin >> N;
//N의 각 자리수 저장 (역순)
while (N > 0) {
arr[cnt++] = N % 10;
N /= 10;
}
//arr 정렬
//큰 값순으로 정렬
qsort(arr, cnt, sizeof(int), compare);
//작은 값 순으로 정렬도 해보기(★)
for (int i = 0; i < cnt; i++) {
result = arr[i] + result * 10;
}
cout << result << '\n';
return 0;
}
|
cs |
'백준(C++) > 정렬' 카테고리의 다른 글
[BOJ/C++]11651번_좌표 정렬하기2 (0) | 2024.07.10 |
---|---|
[BOJ/C++]10989번_수정렬하기3 (0) | 2024.07.10 |
[BOJ/C++]25305번_커트라인 (0) | 2024.07.10 |
[BOJ/C++]2587번_대표값2 (0) | 2024.07.08 |
[BOJ/C++]2750번_수정렬하기 (0) | 2024.07.07 |