C#으로 풀기 - 제일 작은 수 제거하기

Amberjack·2024년 2월 22일
0

Codekata

목록 보기
10/16
post-custom-banner

제일 작은 수 제거하기

문제 풀이

나는 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해줘야 사용할 수 있다.

post-custom-banner

0개의 댓글