문제 설명
정수를 저장한 배열, 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을 담는 작업을 먼저 진행한다
그 외에는 arr의 수만큼 배열을 생성하고 min이라는 변수에 임시로 arr[0] 값을 준다
그리곤 처음 for문에서 min값을 구해 놓기 위해 Math.min을 이용해서 min값을 구해두고
다음 for문에서 min과 arr[i] 가 같으면 continue로 건너띄고
아니면 answer에 담는데 이때 answer와 arr의 인덱스 수는 다를것이기 때문에
(예를들어 arr 은 처음엔 4개로 들어오지만 answer에는 min을 제외한 3개가 담겨야함)
answer에 인덱스를 구현할 idx를 생성해서 else에 들어왔을때만 idx++ 해서
인덱스를 맞춰서 넣어준다
public class Solution {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
int[] answer = {};
System.out.println(arr.length);
if(arr.length == 1){
answer = new int[1];
answer[0] = -1;
}else {
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;
for(int i=0; i<arr.length; i++){
if(arr[i] == min){
continue;
}else{
answer[idx] = arr[i];
idx++;
}
}
}
System.out.println(answer);
}
}
'Algorithm' 카테고리의 다른 글
[프로그래머스] 연습문제 (하샤드 수) (0) | 2022.09.26 |
---|---|
[프로그래머스] 연습문제 (콜라츠 추측) (0) | 2022.09.26 |
[프로그래머스] 연습문제 (정수 제곱근 판별) (0) | 2022.09.26 |
[프로그래머스] 연습문제 (정수 내림차순으로 배치하기) (0) | 2022.09.25 |
[프로그래머스] 연습문제 (자연수 뒤집어 배열로 만들기) (0) | 2022.09.25 |