• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

#12933 정수 내림차순으로 배치하기

image

문제 정리

자릿수를 큰 것부터 작은 것 순으로 정렬한 새로운 정수 리턴

생각해보기

자릿수 계산을 해서 min값을 찾을까..~~ 자릿수를 다 뽑아내서 vector나 string에 push_back 또는 append 한 후에
마지막으로 정수로 변환하기?

124를 10으로 나눴을 때 나머지는 4, 몫은 12
12를 10으로 나눴을 때 나머지는 2, 몫은 1

이런식으로 !! ㄷ ㄷ

코드 쓰기

long long - int 관계 (캐스팅)등에 주의해야 메모리 초과가 안 난다.

내 풀이

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

using namespace std;

long long solution(long long n) {
    long long answer = 0;
    vector<int> v;
    long long q = n;
    int r = 0;
    string s = "";
    
    if(q < 10) { return q; }
    
    while(q > 10){
        r = (int)(q % 10);
        q /= 10;
        
        if (q > 10) {
            v.push_back(r); 
        } else {
            v.push_back(r);
            v.push_back(q);
        }
    }
    
    while(v.size() > 0){
        int max = 0;
        int idx = 0;
        for(int k = 0; k<v.size(); k++){
            if (v[k] > max){
                max = v[k];
                idx = k;
            }
        }
        s.append(to_string(max));
        v.erase(v.begin() + idx);
    }
    answer = stol(s);
    
    return answer;
}

stoi가 아니고 stol 을 써줘야 aborted(core dumped) 오류가 안 남!

풀고 나서 알게된 것

만약에 sort 를 써도 된다면

    string str = to_string(n);
    sort(str.begin(), str.end(), greater<char>());
    answer = stoll(str);