TIL | [알고리즘] 제일 작은 수 제거하기(Java)

hyemin·2022년 3월 15일
0

알고리즘

목록 보기
26/38
post-thumbnail

THINKING

  1. arr.length가 1일 경우와 아닐 경우를 나눠서 생각하자
    • 1일 경우 - answer[0] = -1
    • 1보다 클 경우 - 최솟값을 제외한 값을 answer[]에 넣기
  2. 배열 answer의 길이는 배열 arr에서 최솟값을 제외한 값들을 넣어야 하므로 arr.lenght - 1
  3. Math.min()을 이용하여 for문 돌면서 최솟값 찾기
  4. for문 돌면서 최솟값 제외한 arr[i] 값 answer[i]에 넣어주기

내 풀이

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        
        if (arr.length == 1) {
            answer = new int[1];
            answer[0] = -1;
        } else {
            answer = new int[arr.length - 1];
            int min = arr[0];
            
            for (int i = 0; i < arr.length; i++) {
                min = Math.min(min, arr[i]);
            }
            
            int idx = 0;
            for (int i = 0; i < arr.length; i++) {
                if (min == arr[i]) {
                    continue;
                } else {
                    answer[idx] = arr[i];
                    idx++;
                }
            }
        }
        return answer;
    }
}

좋아요 많이 받은 풀이

import java.util.Arrays;
import java.util.stream.Stream;
import java.util.List;
import java.util.ArrayList;

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

앞에서 다 배운 것들이긴한데 막상 문제를 만나면 for문이나 if문 밖에 생각나지 않는 것 같다...

0개의 댓글