2의 영역 Lv. 0

박영준·2023년 6월 19일
0

코딩테스트

목록 보기
262/300
class Solution {
    public int[] solution(int[] arr) {
        int[] answer = {};
        return answer;
    }
}

해결법

방법 1

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {

		int min = 100000;
        int max = 1;
        
        for (int i = 0; i < arr.length; i++) {
        	// 값이 2일 경우 갱신
            if (arr[i] == 2) {
                min = Math.min(min, i);
                max = Math.max(max, i);
            }
        }
        
        // max가 min보다 같거나 클때만 적용된다
        if (min <= max) {
            return Arrays.copyOfRange(arr, min, max + 1);
        } else {
            return new int[]{-1};
        }
    }
}

방법 2

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
    
    	ArrayList<Integer> list = new ArrayList<>();
               
        int frontIdx = -1;
        int backIdx = -1;
        
        // 2가 나오는 첫 인덱스 찾기
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 2) {
                frontIdx = i;
                break;
            }
        }
        
        // 2가 나오는 끝 인덱스 찾기
        for (int j = arr.length-1; j >= 0; j--) {
            if (arr[j] == 2) {
                backIdx = j;
                break;
            }
        }
        
        // 2가 없을 경우
        if (frontIdx == -1 && backIdx == -1) {
            list.add(-1);
        // 2가 있을 경우 (첫 인덱스 ~ 끝 인덱스)    
        } else {
            for (int i = frontIdx; i <= backIdx; i++) {
                list.add(arr[i]);
            }
        }
        
        int[] answer = new int[list.size()];
        
        for(int i = 0; i < answer.length; i++) {
            answer[i] = list.get(i);
        }
    
        return answer;
    }
}

2의 영역 Lv. 0

profile
개발자로 거듭나기!

0개의 댓글