Everything has an expiration date
Programmers [Java] - Lv. 0 : 2의 영역 본문
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;
}
}
'Programmers > [Java] Lv. 0' 카테고리의 다른 글
★Programmers [Java] - Lv. 0 : 배열 조각하기 (0) | 2023.12.06 |
---|---|
Programmers [Java] - Lv. 0 : 배열 만들기 3 (1) | 2023.12.06 |
Programmers [Java] - Lv. 0 : 첫 번째로 나오는 음수 (1) | 2023.12.06 |
Programmers [Java] - Lv. 0 : 리스트 자르기 (1) | 2023.12.06 |
Programmers [Java] - Lv. 0 : 가까운 1 찾기 (0) | 2023.12.06 |