[프로그래머스] 제일 작은 수 제거하기

JIHYUN·2021년 9월 25일
0
post-thumbnail

📌제일 작은 수 제거하기

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

📌사용 언어 : JAVA

📌solution

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
         int[] answer = {};
        
        Vector<Integer> v = new Vector<Integer>();
       
        for(int i = 0; i < arr.length; i++) {
        	v.add(arr[i]);
        }
        int min = v.get(0);
        for(int i = 1; i < v.size(); i++) {
        	if(v.get(i) <= min) {
        		min = v.get(i);
        	}
        }
        for(int i = 0; i < v.size(); i++) {
        	if(v.get(i).equals(min)) {
        		v.remove(i);
        	}
        }
          if(v.size() == 0 ) {
        	answer = new int[1];
        	answer[0] = -1;
        }else {
        	answer = new int[v.size()];
        	for(int i = 0; i < v.size(); i++) {
        		answer[i] = v.get(i);
        	}
        	
        }
                
        return answer;
    }
}

😎 풀이

일단 sort를 써봤는데 그러면 정렬된 상태로 answer이 출력되기 때문에 안된다. 그래서 벡터 v를 선언하고 거기에 arr의 원소들을 다 담아주었다. 그 상태에서 최솟값 min을 찾아준 후에 최솟값과 일치하는 벡터의 원소를 제거하고 if문으로 벡터의 크기가 0이면 answer에 -1만 담아준다. 아니라면 answer에 벡터의 모든 원소들을 담아준 후 리턴한다.

다른 사람들 풀이를 찾아보면 더 쉽고 간결하게 푸는 법이 나올 것 같은데 괜히 오기가 생겨서 찾아보기 싫다! 내가 다시 풀어보고 수정할거다! ~.~

profile
이것저것 공부중

0개의 댓글