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