백준/단계별

백준 10818 C#) 최소, 최대

alpacadabra 2022. 4. 18. 17:09

원소의 개수가 많긴 하나 시간 초과가 발생하는 문제는 아니다.

 

int n = int.Parse(Console.ReadLine()), min, max;
int[] nums = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);


//1
min = max = nums[0];

for (int i = 1; i < n; i++)
{
    if      (nums[i] < min) min = nums[i];
    else if (nums[i] > max) max = nums[i];
}

Console.Write(min + " " + max);


//2
min = 1000000;
max = -1000000;

foreach (int num in nums)
{
    if (num < min) min = num;
    if (num > max) max = num;
}

Console.Write("{0} {1}", min, max);


//3
Console.Write($"{nums.Min()} {nums.Max()}");


//4
Array.Sort(nums);
Console.Write($"{nums[0]} {nums[n - 1]}");

 

다양한 방법으로 풀 수 있는 문제이지만 속도의 차이는 분명히 존재한다.

 

1번과 2번 코드는 정석적인 방법에 가깝다.

두 코드의 차이는 if-else if 이냐, if-if 이냔데, 이는 초기값의 유무에 따라 다르게 구현한 것이다.

 

3번 코드는 최소값과 최대값을 동시에 구하는 것이 아니기 때문에 최선이라고 할 수 없다.

4번 코드 또한 최소값과 최대값을 구하기 위해 배열을 정렬하는 배보다 배꼽이 더 큰 행위를 하고 있다.