https://school.programmers.co.kr/learn/courses/30/lessons/12933
일단 내가 생각한 방식은 입력받는 n을 string으로 변환한 뒤에 char[]로 바꿔서 정렬을 한 다음 char[]를 다시 string으로 변환해서 long.Parse로 answer를 return하는 방법이었다...
public class Solution {
public long solution(long n) {
long answer = 0;
char[] temp = n.ToString().ToCharArray();
temp.OrderByDescending();
string value = temp.ToString();
return answer = long.Parse(value);
}
}
하지만 당연하게도 오류가 났다. 일단 첫 번째, temp.ToString()을 통해 string으로 변환하는 것이 불가능했다. 배열을 ToString으로 변환할 수가 없는 것 같다.
두 번째는 OrderByDescending()이 안되었던 것이다. Order()는 동작하는 데 찾아보니OrderByDescending()는 Linq에서 추출한 데이터를 대상으로 동작하는 듯하다. 아님말고,..
using System;
public class Solution {
public long solution(long n) {
long answer = 0;
char[] temp = n.ToString().ToCharArray();
Array.Sort(temp);
Array.Reverse(temp);
string value = new string(temp);
return answer = long.Parse(value);
}
}
그래서 열심히 뒤적거린 결과 위와 같은 방법으로 해결할 수 있었다. Array.Sort()를 통해 정렬을 한 뒤 Reverse하여 내림차순으로 정렬을 할 수 있었다. 또한 new string(temp)를 사용하여 char[]를 string으로 변환할 수 있었다.