[프로그래머스][C++] 정수 내림차순으로 배치하기
정수 내림차순으로 배치하기
문제 링크
분석
숫자의 자릿수를 기준으로 큰 수부터 작은 순으로 내림차순으로 정렬하는 문제입니다.
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)
댓글남기기