https://school.programmers.co.kr/learn/courses/30/lessons/12935
문제설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [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] |
나의 문제 풀이
1) 먼저, 배열의 원소가 1개일 경우에는 -1을 return 해야하니 if문을 써서 조건식을 만들어 주었다.
2) 제일 작은수가 빠질테니 answer의 배열크기를 새로 지정하였다.
3) 최소값을 배열의 첫번째 수라고 임의 지정하였다.
4) for문과 Math을 사용하여 min 값을 구하였다.
5) index값을 새로 지정하기 위해 idx라는 변수를 만들었다.
6) 새로 for문을 돌고 if 조건식에 배열의 수가 min값과 같으면 for문을 돈다.
7) 같지 않으면 새로 index값을 받으면서 answer에 추가 될수 있도록 하였다.
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++){
min = Math.min(min, arr[i]);
}
int idx = 0; // index는 0부터 시작
for(int i = 0; i < arr.length; i++){
if(arr[i] == min){
continue;
}
else{
answer[idx++] = arr[i];
}
}
return answer;
}
}
'코드문제풀이 > JAVA' 카테고리의 다른 글
[자바] 약수의 개수와 덧셈 (0) | 2023.07.11 |
---|---|
[자바] 가운데 글자 가져오기 (0) | 2023.07.11 |
[자바] 콜라츠 추측 (0) | 2023.07.10 |
[자바] 문자열 내 p와 y의 개수 (0) | 2023.07.10 |
[자바] 크기가 작은 부분문자열 (0) | 2023.07.09 |