📝24.01.15
🔗 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12933?language=csharp
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
using System;
public class Solution {
public long solution(long n) {
long answer = 0;
string s = n.ToString();
char[] c = s.ToCharArray();
Array.Sort(c);
Array.Reverse(c);
answer = long.Parse(new string(c));
return answer;
}
}
어김없이 Linq를 이용한 풀이가 있다. OrderByDescending이 내림차순 정렬인 듯 하다. string으로 변환 후 배열을 정렬하는 매커니즘은 같다.
using System.Linq;
public class Solution {
public long solution(long n) {
long answer = long.Parse(n.ToString().OrderByDescending(c => (int)c).ToArray());
return answer;
}
}
C#과 동일한 방법으로 풀었지만, 다른 점은 C++은 string 자체를 이미 문자 배열이라고 취급해준다는 점이다. 훨씬 간단한 풀이가 되었다. 남이 푼 풀이도 동일했다.
#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;
}