Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Archives
Today
Total
관리 메뉴

Everything has an expiration date

Programmers [Java] - Lv. 0 : 2의 영역 본문

Programmers/[Java] Lv. 0

Programmers [Java] - Lv. 0 : 2의 영역

Jelly-fish 2023. 12. 6. 12:00

 

 

import java.util.ArrayList;

class Solution
{
    public int[] solution(int[] arr)
	{
		// 최종 결과값을 저장할 result int[] 배열 선언.
		int[] result;

		int stIdx = 0;	//-- 배열 추출 시작 인덱스
		int endIdx = 0;	//-- 배열 추출 종료 인덱스
		
		// 2를 발견했을 때 추출한 배열을 저장할 ArrayList 선언.
		ArrayList<Integer> arrList = new ArrayList<>();
		
		// 2를 발견하면 true, 2를 발견하지 못하면 false.
		boolean flag = false;
		
		for (int i = 0; i < arr.length; i++) {
			// 2를 발견한 순간, 2가 모두 포함된 부분 배열 추출을 진행한다.
			if (arr[i] == 2) {
				// 배열 추출 시작 인덱스를 지정한다.
				stIdx = i;
				flag = true;
				break;
				
			}
			
		}
		
		// 맨 마지막 2를 찾는다.
		for (int k = arr.length - 1; k >= 0; k--) {
			// 배열 추출 종료 인덱스를 뒤에서 부터 찾고
			// 처음으로 발견한
			if (arr[k] == 2) {
				endIdx = k;
				flag = true;
				break;
			}
		}
		
		
		// 설정된 시작 인덱스, 끝 인덱스에 해당하는 배열요소를
		// 추출해서 ArrayList에 추가한다.
		
		// 만약, arr 배열에서 2를 찾아서 flag == true 가 되었다면
		// 배열을 추출하여 arrList에 add 한다.
		if (flag)
		{
			for (int i = stIdx; i <= endIdx; i++)
				arrList.add(arr[i]);
			
		}
		
		// 2를 발견 못했다면, 결과 리스트에 -1만 추가한다.
		if (!flag)
			arrList.add(-1);
		
		
		// arrList를 result 배열에 옮겨 담는다. (반환형태가 int[] 이므로)
		result = new int[arrList.size()];
		
		for(int i = 0; i < result.length; i++)
			result[i] = arrList.get(i);
		
		return result;
	}
    
}