티스토리 뷰
반응형
Using Language : Java
Using Tool : Eclipse
- 프로그래머스 문제 소개
< 제일 작은 수 제거하기 >
문제 설명
정수를 저장한 배열, 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]
의사코드
- if문을 이용해서 arr배열의 값이 1개일 경우 return -1
- 최솟값을 구해주기 위해서 min변수에 배열의 0 번째 값 저장
- for문으로 arr배열 길이만큼 돌리면서 min변수값이 제일 작은지 비교
- 다시 한번 for문으로 arr배열 길이만큼 돌리면서 min값이 arr[i]값과 같지 않을 경우 list에 삽입 ( 이과정에서 min 값 제거 )
- answer에 list의 size만큼 배열 크기를 할당
- 순서대로 list값을 answer배열에 옮겨 담고 return
<Solution19.java>
package level1;
import java.util.ArrayList;
import java.util.List;
public class Solution19 {
public int[] solution(int[] arr) {
int[] answer = {};
List<Integer> list = new ArrayList<Integer>();
int min = arr[0];
if (arr.length == 1) {
answer = new int[] { -1 };
return answer;
}
for (int i = 0; i < arr.length; i++) {
if (min > arr[i]) {
min = arr[i];
}
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] != min) {
list.add(arr[i]);
}
}
answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
<Solution19Test.java>
package level1;
import static org.junit.Assert.assertArrayEquals;
import org.junit.Test;
public class Solution19Test {
@Test
public void 결과() {
Solution19 solution = new Solution19();
int[] arr = { 4, 3, 2, 1 };
int[] answer = { 4, 3, 2 };
int[] arr2 = { 10 };
int[] answer2 = { -1 };
int[] arr3 = { 5,1,2,6,8 };
int[] answer3 = {5,2,6,8 };
assertArrayEquals(answer, solution.solution(arr));
assertArrayEquals(answer2, solution.solution(arr2));
assertArrayEquals(answer3, solution.solution(arr3));
}
}
반응형
'프로그래머스' 카테고리의 다른 글
26. 프로그래머스_콜라츠 추측 (0) | 2021.02.24 |
---|---|
25. 프로그래머스_최대공약수와 최소공배수 (0) | 2021.02.24 |
23. 프로그래머스_정수 제곱근 판별 (0) | 2019.09.18 |
22. 프로그래머스_정수 내림차순으로 배치하기 (0) | 2019.09.18 |
21. 프로그래머스_자연수 뒤집어 배열로 만들기 (0) | 2019.09.17 |
댓글