문제
정수 배열
arr
와 query
가 주어집니다.query
를 순회하면서 다음 작업을 반복합니다.- 짝수 인덱스에서는
arr
에서query[i]
번 인덱스를 제외하고 배열의query[i]
번 인덱스 뒷부분을 잘라서 버립니다.
- 홀수 인덱스에서는
arr
에서query[i]
번 인덱스는 제외하고 배열의query[i]
번 인덱스 앞부분을 잘라서 버립니다.
위 작업을 마친 후 남은
arr
의 부분 배열을 return 하는 solution 함수를 완성해 주세요.제한사항
- 5 ≤
arr
의 길이 ≤ 100,000 - 0 ≤
arr
의 원소 ≤ 100
- 1 ≤
query
의 길이 < min(50,arr
의 길이 / 2) query
의 각 원소는 0보다 크거나 같고 남아있는arr
의 길이 보다 작습니다.
예시

풀이
arr[]
를 answer[]
로 옮겨서 코딩하였다. 해당 문제의 핵심 문법은Arrays.copyOfRange()
이다. 이 문법의 사용법은 Arrays.copyOfRange(배열변수명, 시작, 끝)
이며 이 문법을 사용하면 내가 선택한 시작~끝까지만 배열을 남기는 문법이다.
예시로는 int[] arr = {1,2,3,4,}
가 있다. Arrays.copyOfRange(arr, 1,2)
라고 하였을 때 arr
에 index[1]~index[2]
까지만 남을 것이다. 결과는 {2,3}
만 남는다.
Arrays.copyOfRange
문법을 이용하여 내가 원하는 만큼의 index
만 남기는 것이 핵심이다.if
문을 사용하여 홀수의 index
이면 뒷부분이 없어지게, 짝수의 index
면 앞부분이 없어지게 설계하였다.import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int[] query) {
int[] answer = arr;
for (int i = 0; i < query.length; i++) {
if (i % 2 == 0) { // 짝수일 경우
answer = Arrays.copyOfRange(answer, 0, query[i] + 1);
} else {
answer = Arrays.copyOfRange(answer, query[i], answer.length);
}
}
return answer;
}
}
Share article