코딩테스트/프로그래머스

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

플래시🦥 2023. 8. 17.
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181893

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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


해당 문제는 주어진 query배열의 값과 인덱스를 사용하여 배열을 자르는 문제이다. 

query[i]의 인덱스 즉, i가 짝수이면 query [i]의 뒤를 자르고 홀수이면 query [i]의 앞을 자르면 되는 간단한 문제이다. 

잘라서 버린다는 것은 원배열에서 필요한 부분만 남겨두면 된다는 말이다. 

 

짝수일 경우에는 0~query [i] 부분을 남겨두면 되고 

홀수일 경우에는 query[i]~끝부분까지 남겨두면 된다. 

 

전체코드

import java.util.*;
class Solution {
    public int[] solution(int[] arr, int[] query) {
        
        int[] answer = arr.clone();
        
        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;
    }
}
728x90
반응형

댓글