나는 List를 사용하여 문제를 해결하려 했다. 배열보다는 리스트가 index를 제거하는 것이 더 편하기 때문이다. 내가 생각한 방법은 for문을 돌며 최소값을 찾은 뒤, 해당 최소값의 위치를 RemoveAt()을 사용하여 제거하는 것이었다.
using System.Collections.Generic;
using System.Linq;
public class Solution {
public int[] solution(int[] arr) {
List<int> answer = arr.ToList();
if (answer.Count == 1){
answer[0] = -1;
}
else{
int min = answer[0];
int index = 0;
for(int i = 0; i < answer.Count; i++)
{
if (answer[i] <= min)
{
min = answer[i];
index = i;
}
}
answer.RemoveAt(index);
}
return answer.ToArray();
}
}
해당 문제를 풀고 다른 사람의 코드를 확인해보니 최소값을 찾는 Min()이라는 함수가 있다는 것을 알 수 있었다!
using System;
using System.Linq;
public class Solution {
public int[] solution(int[] arr) {
int v = arr.Min();
int[] answer = arr.Where(x => x != v).ToArray();
if (answer.Count() == 0)
{
answer = new int[] { -1 };
}
return answer;
}
}
Min()은 System.Linq에 선언되어 있으니 사용할 때는 import해줘야 사용할 수 있다.