Level1  정수 내림차순으로 배치

 

 문제

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

제한 조건
  • n은 1이상 8000000000 이하인 자연수입니다.

입출력 
n return
118372 873211

 

 풀이

사용언어 : C++

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;
bool compare( int a , int b);

long long solution(long long n) {
    long long answer = 0;
    long long tempNum = n;
    vector<int> vecNum;
    string strTemp;
    
    
    
    while (tempNum > 0){
        vecNum.push_back(tempNum%10);
        tempNum /= 10;        
    }
    
    // 기본 정렬이 오름차순 compare를 넣어 내림차순으로 변경
    sort(vecNum.begin(), vecNum.end(), compare);
    

    for (int i = 0; i < vecNum.size(); ++i){
        
        strTemp += to_string(vecNum[i]);
        
    }
    
    answer = stol(strTemp);
    
    
    
    return answer;
}


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

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12933

+ Recent posts