Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 자릿수 합에 따라 숫자 정렬

<시간/>

이 섹션에서는 숫자의 합에 따라 숫자를 정렬하는 방법을 살펴보겠습니다. 따라서 숫자의 자릿수의 합이 더 작은 경우 해당 숫자가 먼저 배치되고 다음 숫자는 더 큰 자릿수의 합이 배치됩니다.

data = {14, 129, 501, 23, 0, 145}

정렬 후 -

data = {0, 14, 23, 501, 145, 129}

여기서 우리는 그것들을 정렬하기 위해 우리 자신의 비교 논리를 만들 것입니다. 이 비교 논리는 C++ STL의 정렬 기능에서 사용됩니다.

알고리즘

compare(num1, num2):
Begin
   if sum of digits of num1 < sum of digits of num2, then
      return 1
   return 0
End

예시

#include<iostream>
#include<algorithm>
using namespace std;
int sumOfDigits(int n){
   int sum = 0;
   while(n){
      sum += n%10;
      n /= 10;
   }
   return sum;
}
int compare(int num1, int num2){
   if(sumOfDigits(num1) < sumOfDigits(num2))
   return 1;
   return 0;
}
main(){
   int data[] = {14, 129, 501, 23, 0, 145};
   int n = sizeof(data)/sizeof(data[0]);
   sort(data, data + n, compare);
   for(int i = 0; i<n; i++){
      cout << data[i] << " ";
   }
}

출력

0 14 23 501 145 129