문제
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰 것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를 들어 n이 118372면 873211을 리턴하면 됩니다.
풀이
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
long long solution(long long n) {
long long answer = 0;
vector<long long> num;
string s = to_string(n);
for(int i=0; i<s.length(); i++){
num.push_back(s[i]-'0');
}
int size = num.size();
sort(num.begin(), num.end(),greater<>());
for(int i=0; i<size; i++){
answer += num[i] * pow(10, size-1-i);
}
return answer;
}
숫자를 string으로 바꾼 후 vector에 넣어주어 sort를 이용해 정렬해 주었다.
다른 사람 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long solution(long long n) {
long long answer = 0;
string str = to_string(n);
sort(str.begin(), str.end(), greater<char>());
answer = stoll(str);
return answer;
}
string 자체에도 sort를 쓸 수 있었다!
숫자를 string으로 바꾸어주어 sort를 사용해 내림차순으로 정렬한 후 atoll을 이용해 문자를 longlong타입으로 바꾸어주었다.
atoll
- atol() 함수는 문자 스트링을 long 값으로 변환한다.
- atoll() 함수는 문자 스트링을 long long 값으로 변환한다.
atoi
- atoi() 함수는 문자 스트링을 정수 값으로 변환한다.
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스] 최대공약수와 최소공배수 / 유클리드 호제법 (0) | 2022.02.26 |
---|---|
[프로그래머스] 직사각형 별찍기 / append (0) | 2022.02.25 |
[프로그래머스] 제일 작은 수 제거하기 / erase , min_element (0) | 2022.02.23 |
[프로그래머스]자릿수 더하기 / to_string (0) | 2022.02.21 |
[프로그래머스]이상한 문자 만들기 (0) | 2022.02.21 |