[코딩테스트] 5. 배열 조각하기

편준민's avatar
Mar 09, 2025
[코딩테스트] 5. 배열 조각하기

문제

💡
정수 배열 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의 길이 보다 작습니다.

예시

notion image

풀이

arr[]answer[]로 옮겨서 코딩하였다. 해당 문제의 핵심 문법은Arrays.copyOfRange()이다. 이 문법의 사용법은 Arrays.copyOfRange(배열변수명, 시작, 끝)이며 이 문법을 사용하면 내가 선택한 시작~끝까지만 배열을 남기는 문법이다. 예시로는 int[] arr = {1,2,3,4,}가 있다. Arrays.copyOfRange(arr, 1,2) 라고 하였을 때 arrindex[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

YunSeolAn