문제 : 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴
제한조건
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
풀이 : 다른사람 풀이를 보고 너무 부끄러워지는....코드...인거같다..하핳... 왜이랬을까.. 왜 다중 for 문을 썻을까...
public static int[] solution(int[] arr)
{
int[] answer = new int[] { };
if (arr.Length <= 1)
{
answer = new int[] { -1 };
return answer;
}
int temp = arr[0];
for (int i = 0; i < arr.Length; i++)
{
for (int j = 1; j < arr.Length; j++)
{
if (temp < arr[j]) continue;
else
temp = arr[j];
}
}
answer = arr.Select(x => x).Where(y => y != temp).ToArray();
return answer;
}
풀이2 : 위에것을 줄이자.... 히 min / max 가 있는데...저걸 왜 구현을.......
public static int[] solution(int[] arr)
{
int[] answer = new int[] { };
if (arr.Length <= 1)
{
answer = new int[] { -1 };
return answer;
}
int temp = arr.Min();
answer = arr.Select(x => x).Where(y => y != temp).ToArray();
return answer;
}
풀이3 : 이러한 배열을 유지한체 필요없는것들은 뺀 임시 배열과 비교 하는것을 구현 해보고싶었는데 비슷한게 있어 다시 풀어 보았다!
public static int[] solution(int[] arr)
{
List<int> b = new List<int>(arr);
List<int> c = new List<int>(arr);
b.Sort();
c.Remove(b[0]);
if (c.Count == 0)
{
c.Add(-1);
}
return c.ToArray();
}
'알고리즘 > C#' 카테고리의 다른 글
[C#] 콜라츠 추측 - 프로그래머스 (0) | 2020.10.19 |
---|---|
[C#] 최대 공약수와 최소 공배수 - 프로그래머스 (0) | 2020.10.19 |
[C#] 정수 제곱근 판별 - 프로그래머스 (0) | 2020.10.18 |
[C#] 정수 내림차순으로 배치하기 - 프로그래머스 (0) | 2020.10.17 |
[C#] 자연수 뒤집어 배열로 만들기 - 프로그래머스 (0) | 2020.10.17 |