본문 바로가기

알고리즘 자료구조/프로그래머스

[프로그래머스] 2의 영역

728x90

🖊️문제

정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return하는 solution함수를 완성해 주세요.

단, arr에 2가 없는 경우 [-1]을 return합니다.

 

 

🖊️문제 풀이

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        ArrayList<Integer> list = new ArrayList<>();
        int startIdx = -1;
        int endIdx = -1;

        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == 2){
                startIdx = i;
                break;
            }
        }

        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == 2){
                endIdx = i;
            }
        }

        if(startIdx!=-1 && endIdx!=-1){
            for (int i = startIdx; i <=endIdx ; i++) {
                list.add(arr[i]);
            }
        }else if(startIdx==endIdx && startIdx != -1 && endIdx != -1){
            list.add(2);
        }else {
            list.add(-1);
        }
        
        answer = list.stream().mapToInt(Integer::intValue).toArray();


        return answer;
    }
}
728x90