Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Far from it.

제일 작은수 제거하기 본문

문제풀기

제일 작은수 제거하기

두유콩 2019. 9. 22. 19:31

문제 설명

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

 

//

 

중복된 원소는 배열에 안들어간다고 제한조건을 걸어놨으니 입력받는 배열의 길이가 n이라면

return 되는 배열은 n-1이라고 생각하고 문제를 접근했다.

 

public class Solution {

	public int[] solution(int[] arr) {
	    
		int[] answer = new int[arr.length-1]; // 제일 작은수를 하나 제거했으므로
		int min = arr[0]; // 제일 작은 수를 일단 배열의 첫번째 원소로 지정
		int tem = 0;
		
		if(arr.length<=1) { // 배열의 원소가 하나거나 배열이 비어있을 경우 -1을 return
			return new int[] {-1};
		}
		
		for (int i = 0; i < arr.length; i++) { // 배열에서 제일 작은 원소를 찾아 min에 저장
			if(min > arr[i]) {
				min = arr[i];
			}
		}
		
		for (int i = 0; i < arr.length; i++) { // 배열에서 min을 찾아서 뒤로 한칸씩 이동
			if(min==arr[i]) {
				for (int j = i+1; j < arr.length;) {
					tem = arr[i];
					arr[i]=arr[j];
					arr[j]=tem;
					break;
				}
			}
		}
		
		
		for (int i = 0; i < arr.length-1; i++) { //이동시킨 배열을 answer에 저장
			answer[i] = arr[i];
		}
		
	    return answer;
	  }
}

 

처음에 왜 계속 오류가 뜨나 싶었는데

 

" 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴 " 을 제대로 작성하지 못해서 생긴 문제였다.

 

 

'문제풀기' 카테고리의 다른 글

시저 암호  (0) 2019.09.22
문자열 다루기 기본  (0) 2019.09.22
콜라츠 추측  (0) 2019.09.17
최대공약수와 최소공배수  (0) 2019.09.17
하샤드 수  (0) 2019.09.17