본문 바로가기

Java/Java 알고리즘 프로그래머스

[Sort] 01. 제일 작은 수 제거하기

반응형
  • 제일 작은 수 제거하기
문제 설명

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

제한 조건
  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
입출력 예arrreturn
[4,3,2,1] [4,3,2]
[10] [-1]

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        int n=arr.length;
        int m=0;
        int min=Integer.MAX_VALUE;
        if(n==1){
            answer=new int[n];
            answer[0]=-1;
            return answer;
        }else{
            answer=new int[n-1];
            for(int i=0;i<n;i++){
                if(min>arr[i]){
                    min=arr[i];
                    m=i;
                }
            }
        for(int i=m+1;i<arr.length;i++){
          arr[i-1] = arr[i];
        }
        for(int i=0;i<answer.length;i++){
          answer[i] = arr[i];
        }
        return answer;
    }
    }
}

 

+) 세련된(?) 풀이

import java.util.*;
class Solution {
    public List<Integer> solution(int[] arr) {
        int min = Arrays.stream(arr).min().getAsInt();
        int n=0;
        Integer[] arr2 = new Integer[arr.length];
        for(int i=0;i<arr.length;i++){
            arr2[i]=arr[i];
        }
        List<Integer> list = new ArrayList<Integer>(Arrays.asList(arr2));
        if(list.size()==1) {
            list.set(0,-1);
        }
        else
        list.remove((Integer)min);
        return list;
    }
}

# 리스트에서 객체값을 지우고 싶을 때 (기본적으로, 해당 인덱스값을 제거한다.)

숫자인경우, remove((Integer) 원하는 숫자);

문자인경우, remove("원하는 문자");

 

#List와 같은 컬렉션프레임워크는, Integer와 같은 원형으로 만들어진다.

 

#스트림을 이용한 최댓값, 최솟값, sum 값 빨리 찾기

Arrays.stream(arr).min().getAsInt();

Arrays.stream(arr).max().getAsInt();

Arrays.stream(arr).sum();

 

#Integer 배열을 리스트로 변환 

List<Integer> list = new ArrayList<Integer>(Arrays.asList(arr2));

반응형