원소의 개수가 많긴 하나 시간 초과가 발생하는 문제는 아니다.
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번 코드 또한 최소값과 최대값을 구하기 위해 배열을 정렬하는 배보다 배꼽이 더 큰 행위를 하고 있다.
'백준 > 단계별' 카테고리의 다른 글
백준 4344 C#) 평균은 넘겠지 (0) | 2022.04.18 |
---|---|
백준 2577 C#) 숫자의 개수 (0) | 2022.04.18 |
백준 1110 C#) 더하기 사이클 (0) | 2022.04.18 |
백준 10951 C#) A+B - 4 (0) | 2022.04.18 |
백준 10871 C#) X보다 작은 수 (0) | 2022.04.18 |
댓글