
배열의 길이와 배열이 주어지고, 해당 배열에서 최소값과 최대값을 출력하는 문제이다.
Console.ReadLine();
int[] arr = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
Array.Sort(arr);
Console.Write($"{arr[0]} {arr[arr.Length - 1]}");

C# 내장함수 Array.Sort()를 이용해서 배열을 정렬한 후 가장 앞의 요소(최소값)과 가장 끝의 요소(최대값)를 뽑아 출력하여 풀어내었다.
여기서 생각해 볼 점은 정렬의방식이다. 내장함수의 Sort()방식은 어떠한 방식의 정렬방식을 사용하고 있는지 확인할 필요가 있다. C#의 Array.Sort()경우 퀵 정렬 알고리즘을 사용한다.
퀵정렬은 평균적으로 O(n log n)의 시간복잡도를 갇는다.
하지만 최악의 경우 O(n^2)의 시간복잡도를 가질 수 도 있다.
문제를 푸는데 문제는 없었지만, 만약 시간초과로 인해 틀리게 된다면 퀵정렬보다 성능이 좋을 수있는 병합정렬이나 힙정렬을 생각해 봐야할 수도 있다.
Console.ReadLine();
var a = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
Console.WriteLine($"{a.Min()} {a.Max()}");
와우 생각도 못했다. 왜 이렇게 간단한 생각을 못했을까? 배열내 최소값 최대값을 구해주는 내장함수도 있을텐데.. 나는 굳이 정렬을 해서 그 배열의 앞 뒤를 뽑는 번거로운 작업을 하였다. 위 코드를 보며 좀 더 유연한 생각을 할 필요가 있겠다라고 생각했다.