728x90
프로그래머스 _ 코딩 기초 트레이닝 DAY 12 - (5)
출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181893
문제 | 정수 배열 arr와 query가 주어집니다.
query를 순회하면서 다음 작업을 반복합니다.
- 짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.
- 홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.
위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.
입력 #1 | arr=[0,1,2,3,4,5] query=[4,1,2]
출력 #1 | [1,2,3]
>> 풀이 <<
처음에는 리스트로 바꾸어 풀려고 했으나, array에도 적당한 메소드가 있지 않을까 해서 찾아보았다!
찾아본 결과, 배열을 원하는 범위만큼 복사해주는 메소드가 있다는 것을 알게되었다.
for문을 이용하여 query를 순차적으로 받아주고, query배열 index를 짝수/홀수 경우를 나누어 위 메소드를 이용해주면 해결할 수 있다.
- 원하는 범위만큼 배열 복사 - Arrays.copyOfRange()
- copyOfRange(arr, startidx, endidx + 1)은 원하는 배열을 arr에 넣고, 시작인덱스와 끝인덱스를 설정해 그만큼의 배열을 복사해주는 메소드이다.
- query배열 for문 돌리기 - 기존 for문 사용
- 문제를 제대로 이해하지 못해 forEach문을 사용했다가 원하는 답을 얻지 못했다..! 짝수 홀수 판단은 query배열의 index를 기준으로 하고, 배열을 자르는 것은 query의 요소를 기준으로 하는 문제이다
코드는 다음과 같다
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] query) {
for (int i = 0; i < query.length; i++) {
if (i % 2 == 0) {
arr = Arrays.copyOfRange(arr, 0, query[i]+1);
} else {
arr = Arrays.copyOfRange(arr, query[i], arr.length);
}
}
return arr;
}
}
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[프로그래머스] 길이에 따른 연산 (IntStream, stream.reduce) - JAVA (0) | 2023.09.13 |
---|---|
[프로그래머스] n개 간격의 원소들 (Math클래스) - JAVA (0) | 2023.08.30 |
[프로그래머스] 문자 개수 세기 ( 대소문자 판별, 배열 값 채우기 ) - JAVA (0) | 2023.07.21 |
[프로그래머스] 접미사 배열 (Arrays.sort()) - JAVA (0) | 2023.07.13 |
[프로그래머스] 문자열 여러 번 뒤집기 (String.valueOf vs toString) - JAVA (0) | 2023.07.13 |