/favicon.ico

itcode.dev

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

2021-12-18 (토) 20:55:40
https://user-images.githubusercontent.com/50317129/145976356-6b5d1430-31c0-4c34-829e-6be8f747ab19.png
프로그래머스

시리즈 모아보기

프로그래머스

55 / 78
랭크사용 언어
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] 입니다.
arrreturn
{ 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();
    }
}

Tags

# 프로그래머스
# 알고리즘
# JAVA(자바)
# Level 1