[프로그래머스 / JAVA] Level 1 제일 작은 수 제거하기 (12935)
⏰ 2021-12-18 (토) 20:55:40
제일 작은 수 제거하기
랭크 | 사용 언어 |
---|---|
Level 1 |
문제 설명
정수를 저장한 배열, 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 } |
풀이
배열 arr
의 가장 작은 수를 찾아 제거하고, 남은 배열을 반환하면 된다. 만약 제공된 배열의 갯수가 하나라면, 그 하나가 최소값이므로 그 값을 제외하면 빈 배열이 된다. 이 경우 -1을 담아 { -1 }
로 반환한다.
배열을 돌며 가장 작은 값을 파악하고 그 값을 제거한 뒤 반환한다.
이 장에서는 ArrayList
를 활용한다. arr
를 돌며 최소값을 비교함과 동시에 ArrayList
에 요소를 입력한다.
이후 최소값을 ArrayList
로부터 삭제한 뒤 반환한다.
JAVA
1 2 3 4 5 6
int min = Integer.MAX_VALUE; for (int item : arr) { min = Math.min(min, item); }
최소값은 위와 같이 판별한다.
코드
JAVA
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 32 33 34 35 36 37 38 39 40 41
import java.util.ArrayList; /** * 제일 작은 수 제거하기 클래스 * * @author RWB * @since 2021.12.13 Mon 19:20:27 */ class Solution { /** * 해답 반환 메서드 * * @param arr: [int[]] 정수 배열 * * @return [int[]] 해답 */ public int[] solution(int[] arr) { ArrayList<Integer> list = new ArrayList<>(); int min = Integer.MAX_VALUE; for (int item : arr) { min = Math.min(min, item); list.add(item); } list.remove((Integer) min); // 리스트가 비었을 경우 if (list.isEmpty()) { list.add(-1); } return list.stream().mapToInt(Integer::intValue).toArray(); } }
🏷️ 태그
# 프로그래머스
# 알고리즘
# JAVA(자바)
# Level 1
읽어주셔서 고마워요!
도움이 되셨다면, 공감이나 댓글을 달아주시는 건 어떤가요?
블로그 운영에 큰 힘이 됩니다.