This is a blog.

제일 작은 수 제거하기 본문

RECORD/Programmers

제일 작은 수 제거하기

Calcot 2023. 3. 23. 20:45

문제 설명


정수를 저장한 배열, 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]



 

내가 푼 답 - Java

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr) {
        
        int min = Arrays.stream(arr).min().getAsInt();        
        int[] answer =Arrays.stream(arr).filter(element -> element != min).toArray();
        
        if(answer.length == 0) answer = new int[]{-1};
        
        return answer;
        
    }
}

 

 

 

# 내가 푼 답2 - Java

import java.util.ArrayList;
import java.util.Collections;

class Solution {
    public int[] solution(int[] arr) {
    
        ArrayList<Integer> integerArray = new ArrayList<>(arr.length);

        for (int i : arr) 
            integerArray.add(i);    
            
        int min = Collections.min(integerArray);
        
        // integerArray.remove(index); => 배열 index의 값을 삭제.
        // integerArray.remove(Integer.valueOf(value)); => 배열 안에서 value에 해당하는 값을 삭제.
        integerArray.remove(Integer.valueOf(min));        
 
        int[] answer = integerArray.stream().mapToInt(i -> i).toArray();
        
        if(answer.length == 0) answer = new int[]{-1};
        
        return answer;
        
    }
}

 

 

 

코딩테스트 후기

 

1) stream()은 코드를 간략하게 쓸 수 있으나 실행 속도가 느리다는 단점이 있다.

2) # 내가 푼 답2 - Java는 ArrayList로 풀었다. ArrayList를 int[]로 변경할 때 stream()을 사용하고 싶지 않았다. 그러나 int[] 와 같은 기본형(Primitive) 타입은 toArray()만으로 변환이 되지 않아 하는 수 없이 사용;; 첫 번째 코드는 stream()을 두 번, 두 번째 코드는 stream()을 한 번 쓴 걸로 만족해야 하나. 하하하.

3) List<int[]> integerArray = Arrays.asList(arr); 로 풀고 싶었으나 remove가 안 되는 문제로 ArrayList<Integer>로 바꿨다.

 

'RECORD > Programmers' 카테고리의 다른 글

가운데 글자 가져오기  (0) 2023.03.24
없는 숫자 더하기  (2) 2023.03.24
음양 더하기  (0) 2023.03.23
핸드폰 번호 가리기  (0) 2023.03.23
나누어 떨어지는 숫자 배열  (0) 2023.03.23
Comments