𝝅번째 알파카의 개발 낙서장

screen

[프로그래머스 / JAVA] Level 1 제일 작은 수 제거하기 (12935)

posts

알고리즘

시리즈 톺아보기

프로그래머스

프로그래머스
count

제일 작은 수 제거하기 🔗

랭크 사용 언어
Level 1 JAVA

🔗 제일 작은 수 제거하기

문제 설명 🔗

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

0int min = Integer.MAX_VALUE;
1
2for (int item : arr)
3{
4 min = Math.min(min, item);
5}

최소값은 위와 같이 판별한다.

코드 🔗

JAVA

0import java.util.ArrayList;
1
2/**
3 * 제일 작은 수 제거하기 클래스
4 *
5 * @author RWB
6 * @since 2021.12.13 Mon 19:20:27
7 */
8class Solution
9{
10 /**
11 * 해답 반환 메서드
12 *
13 * @param arr: [int[]] 정수 배열
14 *
15 * @return [int[]] 해답
16 */
17 public int[] solution(int[] arr)
18 {
19 ArrayList<Integer> list = new ArrayList<>();
20
21 int min = Integer.MAX_VALUE;
22
23 for (int item : arr)
24 {
25 min = Math.min(min, item);
26
27 list.add(item);
28 }
29
30 list.remove((Integer) min);
31
32 // 리스트가 비었을 경우
33 if (list.isEmpty())
34 {
35 list.add(-1);
36 }
37
38 return list.stream().mapToInt(Integer::intValue).toArray();
39 }
40}