처음에는 깃수 정렬 처럼 요소들의 자릿수를 하나하나씩 Queue에 저장하여 큰 수 순서대로 정렬하려 하였다.
그러나 이 로직에는 크나큰 문제가 있었다.
3과 30이 있으면 330이랑 303이 나온다. 그러니 3, 30 순으로 정렬해야 한다.
그래서 모두 문자열로 합치고 그 아스키코드의 크기를 비교하여 정렬하기로 했다.
public string solution(int[] numbers)
{
List<string> list = new List<string>();
int zeroCnt = 0; // 모두 0일때의 예외처리
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] == 0) zeroCnt++;
list.Add(numbers[i].ToString());
}
if (zeroCnt == numbers.Length) return "0";
StringBuilder stringBuilder = new StringBuilder();
list.Sort((x, y) => (y + x).CompareTo(x + y)); // 람다식
for (int i = 0; i < numbers.Length; i++)
{
stringBuilder.Append(list[i]);
}
return stringBuilder.ToString();
}