728x90
코드 힌트
- 짝수/홀수 인덱스의 역할:
- query 배열의 인덱스가 짝수일 때는 배열의 끝 인덱스를 줄이고, 홀수일 때는 시작 인덱스를 늘립니다. 이를 통해 배열의 범위를 점진적으로 줄여나갑니다.
- 배열 범위 계산:
- 배열을 자르고 삭제할 필요 없이 startIndex와 endIndex를 업데이트하면서 배열의 특정 범위를 설정합니다.
- endIndex와 startIndex를 업데이트하면서 최종 범위가 결정됩니다.
- 결과 배열 생성:
- 결과 배열의 크기는 endIndex - startIndex + 1로 계산됩니다.
- 새로운 배열을 생성하고, 원본 배열에서 해당 범위의 요소를 복사합니다.
- 반복문과 인덱스 업데이트:
- for 루프를 통해 query 배열을 순회하면서 인덱스를 업데이트합니다.
- 짝수 인덱스에서는 endIndex를, 홀수 인덱스에서는 startIndex를 업데이트하여 배열 범위를 점차 줄여나갑니다.
- 효율적인 배열 복사:
- 최종 범위가 설정된 후, 결과 배열을 초기화하고 원본 배열의 해당 범위 요소를 순서대로 복사하여 결과 배열을 생성합니다.
정답은 더보기 클릭
더보기
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
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 왼쪽 오른쪽 (0) | 2024.08.08 |
---|---|
[프로그래머스] 문자열 잘라서 정렬하기 (0) | 2024.08.08 |
[프로그래머스] 리스트 자르기 (0) | 2024.08.06 |
[프로그래머스] 다음에 올 숫자 (0) | 2024.08.05 |
[프로그래머스] 글자 지우기 (0) | 2024.08.02 |