less than 1 minute read

[no-alignment]

구현 방식

  • 코드는 간단하지만, Comparision 메소드 및 람다식을 사용해 풀어서 기록해둔다.
  • 정렬 메소드중 오버로드 된것중에 하나로는 List<T>.Sort(Comparision<T>) 가 있다.
  • Comparision<T>delegate 로 정의된 대리자로, delegate int Comparison<in T>(T x, T y);
  • Comparison에는 xy를 받아서 xy 보다 작으면 0보다 작은 정수를, xy가 같으면 0을, xy 보다 크면 1 을 리턴해야하는 함수를 할당해야한다.
  • 이걸 쓰면 크고 작음의 기준을 커스텀하게 작성할 수 있어서 편리하다.
public string[] solution(string[] strings, int n)
{
    List<string> stringList = new List<string>();
    stringList.AddRange(strings);

    stringList.Sort((x, y) =>
    {
        if (x[n] < y[n])
            return -1;
        else if (x[n] > y[n])
            return 1;
        else
        {
            int camparer = x.CompareTo(y);
            if (camparer < 0)
                return -1;
            else if (camparer == 0)
                return 0;
            else
                return 1;
        }
    }
    );

    return stringList.ToArray();
}