ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 28. 제일 작은 수 제거하기
    코딩 테스트/Level 1 2019. 10. 26. 23:00
    반응형

    https://programmers.co.kr/learn/courses/30/lessons/12935

     

    파이썬

    인덱스를 찾아서 삭제해도 되고

    def solution(arr):
        arr.pop(arr.index(min(arr)))
        return [-1] if len(arr) == 0 else arr

    값을 찾아서 삭제해도 된다. 

    def solution(arr):
        arr.remove(min(arr))
        return [-1] if len(arr) == 0 else arr

    자바스크립트

    함수형으로 풀어야 이쁘게 나올 것 같아서...

    reduce로 직접 최소값을 찾을 수도 있고, BIF(내장함수)를 이용해도 된다.

    function solution(arr) {
        //arr.splice(arr.indexOf(arr.reduce((a, b) => b < a ? b : a)),1)
        arr.splice(arr.indexOf(Math.min(...arr)), 1)
        return arr.length ? arr : [-1]
    }

    자바

    고전적으로 풀어 보고.. 

    import java.util.Arrays;
    
    class Solution {
        public int[] solution(int[] arr) {
            if (arr.length == 1) 
            	return new int[]{-1};
            int[] answer = new int[arr.length - 1];
            int min = arr[0];
            for (int each : arr) 
            	if (each < min) min = each;
            int count = 0;
            for (int each : arr) {
                if (each == min) continue;
                answer[count++] = each;
            }
            return answer;
        }
    }

    함수형으로도 풀어보고

    import java.util.Arrays;
    
    class Solution {
        public int[] solution(int[] arr) {
            int m = Arrays.stream(arr).min().orElse(arr[0]);
            return arr.length == 1 ? new int[]{-1} : Arrays.stream(arr).filter(x -> x != m).toArray();
        }
    }

    가독성은 봵이지만 코테 코뽐(코드 뽐내기)용으로 한줄로도 만들어보고...

    import java.util.Arrays;
    
    class Solution {
        public int[] solution(int[] arr) {
            return arr.length == 1 ? new int[]{-1} : Arrays.stream(arr).filter(x -> x != Arrays.stream(arr).min().orElse(arr[0])).toArray();
        }
    }

    코틀린

    class Solution {
        fun solution(arr: IntArray): IntArray = if (arr.size == 1) intArrayOf(-1) else arr.filter { x -> x != arr.min() }.toIntArray()
    }

    func solution(arr []int) []int {
    	index, min := 0, arr[0]
    	if len(arr) == 1 {
    		return []int{-1}
    	}
    	for i, v := range arr {
    		if v < min {
    			index, min = i, v
    		}
    	}
    	return append(arr[:index], arr[index+1:]...)
    }

    C#

    using System.Collections.Generic;
    using System.Linq;
    
    public class Solution
    {
        public int[] solution(int[] arr)
        {
            List<int> answer = new List<int> { };
            int min = arr.Min();
            foreach (int num in arr)
            {
                if (num != min)
                    answer.Add(num);
            }
            return (arr.Length == 1) ? new int[] { -1 } : answer.ToArray();
        }
    }

    한 줄로... 시간 제한으로 실패

    using System.Linq;
    
    public class Solution
    {
        public int[] solution(int[] arr) 
            => (arr.Length == 1) 
                ? new int[] { -1 } 
                : arr.Where(n => n > arr.Min()).ToArray();
    }

     두 줄로...

    using System.Linq;
    
    public class Solution
    {
        public int[] solution(int[] arr)
        {
            int min = arr.Min();
            return (arr.Length == 1) ? new int[] { -1 } : arr.Where(n => n > min).ToArray();
        }
    }
    반응형
Designed by Tistory.