[C#] 제일 작은 수 제거하기

2020. 7. 25. 20:08[C#] 코딩테스트 문제풀이

반응형

프로그래머스 문제

 

문제 설명

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 조건

  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

나의풀이

using System.Collections.Generic;
using System.Linq;
public class Solution {
    public int[] solution(int[] arr) {
        List<int> arr_list = new List<int>(arr);
        int min = arr.Min();
        arr_list.RemoveAll(num => num == min);
        if(arr_list.Count ==0)
        {
            arr_list.Add(-1);
        }
        return arr_list.ToArray();
    }
}

느낀점 : 우선 배열을 List로 바꿔줘야 삭제에 용이하기 때문에 배열을 List로 변환.

List를 처음 사용해 보아서 어려움이 따랐다.

List 를 사용하기 위해 using System.Collections.Generic;

Linq -> Min() 배열의 최소값을 찾아주기위해선언.

이후에는 간단하게 해결되었다. List에서 가장 작은 값을 제거해주는데, 만약 크기가 1인 리스트에서 최소값이 제거되면 

List.Count ==0 일 것이고, 이때는 List.Add() 를 통해 -1을 넣어주어 조건 만족.

마지막 return 을 리스트 -> 배열로 바꿔주어 리턴.

 

핵심: 배열 안에서 특정 조건을 찾아 삽입 삭제하는 것은 용이하지 않으니 

배열 -> 리스트 (조건 처리) ->배열(출력) 의 형식으로 진행.

 

 

 

반응형