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

문제 링크

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

분석

숫자의 자릿수를 기준으로 큰 수부터 작은 순으로 내림차순으로 정렬하는 문제입니다.

n을 배열이나 스트링으로 만든 후 내림차순으로 정렬 및 자릿수를 정해주면 됩니다.

풀이

#include <string>
#include <algorithm>

long long solution(long long n) {
    long long answer = 0;
    
    std::string str = std::to_string(n);
    
    sort(str.rbegin(), str.rend());
    
    for (int i = 0; i < str.size(); ++i)
    {
        answer = answer * 10 + (str[i] - '0');
    }
    
    return answer;
}

std::to_string은 숫자 타입의 데이터를 스트링 타입으로 변경해줍니다.

sort함수는 정렬을 해주며, 기본적으로 오름차순 정렬을 수행합니다.
str.rbegin()str.rend()는 STL의 역순 반복자(Reverse Iterators)로 각각 끝에서부터 시작하는 반복자를 반환하고, 시작 바로 앞을 가리키는 반복자를 반환합니다.
역순 반복자의 사용으로 내림차순이 됩니다.

반복문에서는 answer의 자릿수를 하나 늘리고, 1의 자릿수에 값을 하나 넣는 것을 반복합니다.
반복문의 경우 answer = stoll(str)를 사용하면 코드를 축약할 수 있습니다.

성능 요약

테스트 1 〉 통과 (0.01ms, 4.14MB)
테스트 2 〉 통과 (0.01ms, 3.68MB)
테스트 3 〉 통과 (0.01ms, 4.14MB)
테스트 4 〉 통과 (0.01ms, 3.72MB)
테스트 5 〉 통과 (0.01ms, 4.21MB)
테스트 6 〉 통과 (0.01ms, 4.21MB)
테스트 7 〉 통과 (0.01ms, 4.14MB)
테스트 8 〉 통과 (0.03ms, 4.17MB)
테스트 9 〉 통과 (0.01ms, 4.16MB)
테스트 10 〉 통과 (0.01ms, 4.21MB)
테스트 11 〉 통과 (0.01ms, 4.21MB)
테스트 12 〉 통과 (0.01ms, 3.68MB)
테스트 13 〉 통과 (0.01ms, 4.21MB)
테스트 14 〉 통과 (0.01ms, 4.14MB)
테스트 15 〉 통과 (0.01ms, 4.14MB)
테스트 16 〉 통과 (0.01ms, 4.14MB)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기