728x90
기술 면접에서 나왔는데 for문 두 개써서 O(n^2) 으로 써냄.
핳하하하하하하핳하ㅏ하하하하하핳핳하하핳하ㅏ하핳
다시 짜본 코드는,
public static void print2largest(int []arr, int arrSize) // 배열과 배열 크기를 파람으로 받고
{
// 함수에서 사용할 int 변수 세 가지
// i 는 for 문에서 쓸거고, first와 second는 첫번째 두번째 큰수
int i, first, second;
if (arrSize < 2)
{
Console.WriteLine(" 배열이 2 보다 작다! ");
return;
}
// int 범위내에서 최소값으로 first, second 를 정의
first = second = int.MinValue;
// for 문을 하나만 써서 linear complexity O(n) 의 복잡도
// n == arrSize 가 되겠지
for (i = 0; i < arrSize ; i++)
{
// i 번째 원소가 first 보다 큰 수이면 first 와 second를 update 해준다.
if (arr[i] > first)
{
second = first;
first = arr[i];
}
// i 번째 값이 first와 second 사이의 값이면 second 를 update 한다.
else if (arr[i] > second && arr[i] != first) { second = arr[i]; }
}
// second 가 그냥 int.MinValue 인 경우 ( 중복값으로 3 3 3 인 케이스 )
if (second == int.MinValue) { Console.Write("두 번째 큰 수는 없군\n"); }
else { Console.Write("두 번째 큰 수는" + second + " 이다!"); }
}
C# 으로 짰고, 오늘 기술면접에서도 느낀거지만 그냥 처음부터 완벽하게 짜려고 하면 안될거 같다.
그냥 sort 만 잘 기억해서 썼으면 nlogn은 됐을텐데..
728x90
'Archive' 카테고리의 다른 글
머신러닝의 종류 (0) | 2020.04.02 |
---|---|
BigO Exercise 1 (0) | 2020.03.27 |
2D Platformer (0) | 2020.03.21 |
3D Unity Portfolio (0) | 2020.03.21 |
LeetCode - Swap Nodes in Pairs (0) | 2020.03.21 |