N

(프로그래머스 c++)정수 내림차순으로 배치하기 본문

프로그래머스 알고리즘/1단계

(프로그래머스 c++)정수 내림차순으로 배치하기

naeunchan 2020. 4. 27. 10:59
728x90
반응형

long long형의 정수 n을 내림차순으로 배치해야 한다.

우선 각 자릿수를 구하여 v 벡터에 저장을 해준다.

이때 v벡터는 long long 형이 아니어도 된다..!

1자리 수를 저장하면 되기 때문..!

 

while문을 통해 각 자릿수를 구하면 sort함수를 통해 오름차순으로 정렬을 한다.

그 후 for문으로 10의 i 승 * v[i]를 해주면 된다..!

예시를 들자면

1) 118372를 while문을 통하여 1 1 8 3 7 2로 v 벡터에 저장을 한다.

2) sort함수를 통해 1 1 2 3 7 8 로 정렬을 한다.

3) i = 0일 때, 10의 0승 * v[0] = 1 * 1

   i = 1일 때, 10의 1승 * v[1] = 10 * 1

   i = 2일 때, 10의 2승 * v[2] = 100 * 2 ...

  이런 식으로 for문이 돌게 된다.

   

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

using namespace std;

long long solution(long long n) {
    long long answer = 0;
    vector<int> v;
    
    while(n > 0)
    {
        v.push_back(n % 10);
        n /= 10;
    }
    sort(v.begin(), v.end());
    
    for(int i = 0; i < v.size(); i++)
        answer += pow(10, i) * v[i];
    return answer;
}
728x90
반응형