본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - 제일 작은 수 제거하기(C#)

by jyppro 2023. 8. 1.

제일 작은 수 제거하기

이번엔 "제일 작은 수 제거하기" 문제를 풀어보도록 하겠습니다. 바로 문제를 살펴보겠습니다.

 

문제 설명

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

 

제한 조건

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

 

입출력 예

arr return
[4, 3, 2, 1] [4, 3, 2]
[10] [-1]

 

시작 코드

public class Solution {
    public int[] solution(int[] arr) {
        int[] answer = new int[] {};
        return answer;
    }
}

 

나의 풀이

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();
    }
}

코드를 먼저 보겠습니다. 이번에는 using문에 사용된 것이 두가지가 있습니다. 첫번째는 System.Collections.Generic, 두번째는 System.Linq 입니다. int형 배열 arr가 주어지고 시작됩니다. int타입의 리스트 arr_list를 arr의 크기로 선언해줍니다. 다음엔 int형 min에 arr.Min()을 사용하여 arr의 최소값을 구해 넣어줍니다. arr_list에 RemoveAll()을 사용하여 arr_list안에 원소가 min과 같은것을 없애줍니다. 만약 arr_list 원소의 개수가 0이라면 -1을 추가해줍니다. 최종적으로 arr_list를 배열형태로 변경하여 리턴해줍니다.

 

using문은 코드를 작성할 때 C# 일부 내부함수를 사용하기위해 선언해주어야 하는 경우가 존재합니다.

코드에서 살펴 본 리스트를 사용하기 위해 제네릭 using문을 사용되었고, Min() 또한 링크를 using문으로 선언했기 때문에 사용가능한 것입니다. 링크는 주로 계산을 하는 함수를 사용할 때 자주 사용됩니다. List<>()와 RemoveAll()은 제네릭에 의해, Min(), Count, Add는 링크에 의해 사용된 것입니다.

 

<NEXT>

오늘은 "제일 작은 수 제거하기" 문제를 풀어보았습니다. 주로 C#에서 제공하는 기능을 활용하여 해결하는 방식이 사용되었습니다. 다음에는 "가운데 글자 가져오기" 문제를 다뤄보도록 하겠습니다. 감사합니다.