제일 작은 수 제거하기

김나영·2023년 6월 21일
0

프로그래머스

목록 보기
34/39

문제 : 제일 작은 수 제거하기

풀이

if(arr.length==1){
  int[] answer ={-1};
  return answer;
}
  • 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하라고 했으므로

  • 만약 arr의 길이가 1이라면 answer 배열에 -1을 채우고 return

int[] answer = new int[arr.length-1];
int min = arr[0];
   for (int i= 0; i < arr.length ; i++) {
       if(min > arr[i]){
           min = arr[i];
       }
   }
  • 배열의 길이가 1보다 클 때 가장 작은 수를 뺀 길이로 초기화

  • 최소값은 arr의 0번째 인덱스로 지정(기준점)

  • arr의 길이만큼 순회

  • 만약 최소값이 arr[i]번째보다 크다면 최소값은 해당 arr[i]

int idx = 0;
for (int i = 0; i < arr.length; i++) {
    if(arr[i] == min){
       continue;
    } answer[idx++] = arr[i];
}
  • 인덱스를 0으로 초기화(반복문 index용)

  • arr의 길이만큼 순회

  • 만약 arr[i] 값이 최소값이랑 같다면 continue(배열에 넣지 않고 넘어감)

  • answer 배열의 인덱스 값을 증가시켜 arr에 저장(인덱스의 값을 변화시켜야허므로)

전체 코드

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

0개의 댓글