
import java.util.*;
class Solution {
public int[] solution(int n, int[] slicer, int[] num_list) {
int a = slicer[0];
int b = slicer[1];
int c = slicer[2];
List<Integer> result = new ArrayList<>();
if (n == 1) {
for (int i = 0; i <= b; i++) {
result.add(num_list[i]);
}
} else if (n == 2) {
for (int i = a; i < num_list.length; i++) {
result.add(num_list[i]);
}
} else if (n == 3) {
for (int i = a; i <= b; i++) {
result.add(num_list[i]);
}
} else {
for (int i = a; i <= b; i += c) {
result.add(num_list[i]);
}
}
int[] answer = new int[result.size()];
for (int i = 0; i < result.size(); i++) {
answer[i] = result.get(i);
}
return answer;
}
}

class Solution {
public int solution(int[] num_list) {
int answer = 0;
for (int i = 0; i < num_list.length; i++) {
if (num_list[i] < 0) {
answer = i;
break;
} else {
answer = -1;
}
}
return answer;
}
}
이 문제는 배열의 값 중 첫번째로 나오는 음수의 인덱스 값을 리턴하는게 핵심이다.

import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
ArrayList<Integer> list = new ArrayList<>();
int a1 = intervals[0][0];
int b1 = intervals[0][1];
int a2 = intervals[1][0];
int b2 = intervals[1][1];
for (int i = a1; i <= b1; i++) {
list.add(arr[i]);
}
for (int i = a2; i <= b2 ; i++) {
list.add(arr[i]);
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
이 문제는 배열에서 정해진 범위의 값을 새로운 배열에 담아 리턴하는 문제

import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
// 초기값으로 배열의 길이보다 큰 값을 가진 변수를 설정
int firstIndex = 100000, lastIndex = 0;
// 배열을 순회하면서 숫자 2가 나타나는 첫 인덱스와 마지막 인덱스를 찾음
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 2) {
firstIndex = Math.min(firstIndex, i);
lastIndex = Math.max(lastIndex, i);
}
}
// 만약 숫자 2가 배열 안에 존재한다면 해당 부분 배열을 반환
if (firstIndex <= lastIndex) {
return Arrays.copyOfRange(arr, firstIndex, lastIndex + 1);
} else { // 그렇지 않다면 {-1}을 반환
return new int[]{-1};
}
}
}
이 문제는 배열 중 첫번째로 나오는 2부터 마지막으로 나오는 2의 범위의 값을 구하는 문제

import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] query) {
int start = 0;
int end = arr.length;
for (int i = 0; i < query.length; i++) {
if (i % 2 == 0) {
// 짝수 인덱스: arr에서 query[i] 번 인덱스를 제외하고 그 뒤의 부분을 자름
end = start + query[i] + 1;
} else {
// 홀수 인덱스: arr에서 query[i] 번 인덱스를 제외하고 그 앞의 부분을 자름
start = start + query[i];
}
}
// 부분 배열 생성
int[] answer = Arrays.copyOfRange(arr, start, end);
return answer;
}
}
이 문제는 배열의 값을 주어진 조건대로 배열을 자르는 문제
문제에서 주어진 조건이 짝수 인덱스는 뒤의 부분을 자르고 홀수 인덱스는 앞의 부분을 자른다.