본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 배열 조각하기

728x90

코드 힌트

  1. 짝수/홀수 인덱스의 역할:
    • query 배열의 인덱스가 짝수일 때는 배열의 끝 인덱스를 줄이고, 홀수일 때는 시작 인덱스를 늘립니다. 이를 통해 배열의 범위를 점진적으로 줄여나갑니다.
  2. 배열 범위 계산:
    • 배열을 자르고 삭제할 필요 없이 startIndex와 endIndex를 업데이트하면서 배열의 특정 범위를 설정합니다.
    • endIndex와 startIndex를 업데이트하면서 최종 범위가 결정됩니다.
  3. 결과 배열 생성:
    • 결과 배열의 크기는 endIndex - startIndex + 1로 계산됩니다.
    • 새로운 배열을 생성하고, 원본 배열에서 해당 범위의 요소를 복사합니다.
  4. 반복문과 인덱스 업데이트:
    • for 루프를 통해 query 배열을 순회하면서 인덱스를 업데이트합니다.
    • 짝수 인덱스에서는 endIndex를, 홀수 인덱스에서는 startIndex를 업데이트하여 배열 범위를 점차 줄여나갑니다.
  5. 효율적인 배열 복사:
    • 최종 범위가 설정된 후, 결과 배열을 초기화하고 원본 배열의 해당 범위 요소를 순서대로 복사하여 결과 배열을 생성합니다.

 


정답은 더보기 클릭

더보기
class Solution {
    public int[] solution(int[] arr, int[] query) {
        // 시작 인덱스와 끝 인덱스를 초기화
        int startIndex = 0;
        int endIndex = arr.length - 1;

        // query 배열을 순회하면서 시작 및 끝 인덱스를 업데이트
        for (int i = 0; i < query.length; i++) {
            if (i % 2 == 0) {
                // query의 인덱스가 짝수일 때: 끝 인덱스를 업데이트
                endIndex = startIndex + query[i];
            } else {
                // query의 인덱스가 홀수일 때: 시작 인덱스를 업데이트
                startIndex += query[i];
            }
        }

        // 최종적으로 설정된 시작 인덱스와 끝 인덱스 사이의 배열 요소를 result 배열에 저장
        int[] result = new int[endIndex - startIndex + 1];
        int index = 0;
        for (int i = startIndex; i <= endIndex; i++) {
            result[index++] = arr[i];
        }

        return result;
    }
}
728x90