본문 바로가기
백준(C++)/정렬

[BOJ/C++]1427번_소트인사이드

by 코잼민 2024. 7. 7.

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