본문 바로가기

programmers-코딩테스트 연습/Level 1. 자바

2021-06-15 / 제일 작은 수 제거하기

문제 설명

정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성한다. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴한다. 예를 들어 [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]

 

초기 코드

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        return answer;
    }
}

 

정답 코드

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

 

코드 설명

-1을 리턴하는 경우는 빈 배열인 경우다. 다시 말해 배열의 길이가 1이라면 min은 그 값이 될테니 빈 배열이다. 따라서 -1을 배열에 담아 리턴한다.

answer의 길이는 제일 작은 수를 빼기 때문에 arr의 길이보다 1 작다. 만약 1을 빼지 않는다면 빈 자리에 0이 들어가기 때문에 0도 같이 리턴한다.

만약 min이 있는 위치와 i가 같다면 continue를 해줘 건너뛴다. 이때 answer와 arr의 방의 길이가 다르므로 cnt를 따로 줘 인덱스 번호를 맞춘다.

 

 

 

코딩테스트 연습 - 제일 작은 수 제거하기

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

programmers.co.kr