[프로그래머스] Lv.0 2의 영역.java

hgghfgf·2023년 6월 3일
0

프로그래머스

목록 보기
118/227

2의 영역.java

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr) {
        int min = 100000, max = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 2) {
                min = Math.min(min, i);
                max = Math.max(max, i);
            }
        }

        if (min <= max) {
            return Arrays.copyOfRange(arr, min, max + 1);
        } else {
            return new int[]{-1};
        }
    }
}

만약 현재 요소가 2인 경우, min과 max를 갱신합니다.
min은 현재 인덱스와 min 중 작은 값을 저장합니다. (Math.min 사용)
max는 현재 인덱스와 max 중 큰 값을 저장합니다. (Math.max 사용)
min이 max 이하인 경우, arr 배열에서 2가 모두 포함된 연속된 부분 배열이 존재하는 것이므로, Arrays.copyOfRange를 사용하여 arr 배열의 min부터 max + 1까지의 요소를 복사하여 반환합니다.
min이 max보다 큰 경우, arr 배열에 2가 없는 것이므로 존재하지 않는 부분 배열을 나타내기 위해 새로운 int 배열 {-1}을 생성하여 반환합니다.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

0개의 댓글