본문 바로가기

알고리즘 자료구조/프로그래머스

[프로그래머스] 리스트 자르기

728x90

🖊️문제

정수 n과 정수 3개가 담긴 리스트 slicer 그리고 정수 여러 개가 담긴 리스트 num_list가 주어집니다. slicer에 담긴 정수를 차례대로 a, b, c라고 할 때 n에 따라 다음과 같이 num_list를 슬라이싱 하려고 합니다.

  • n = 1 : num_list의 0번 인덱스부터 b번 인덱스까지
  • n = 2 : num_list의 a번 인덱스부터 마지막 인덱스까지
  • n = 3 : num_list의 a번 인덱스부터 b번 인덱스까지
  • n = 4 : num_list의 a번 인덱스부터 b번 인덱스까지 c간격으로

올바르게 슬라이싱한 리스트를 return하도록 solution함수를 완성해주세요.

 

 

 

🖊️문제 풀이

import java.util.*;

class Solution {
    public int[] solution(int n, int[] slicer, int[] num_list) {
        ArrayList<Integer> arr = new ArrayList<>();
        int[] answer = {};
        if(slicer.length!=3){
            return null;
        }

        if(n == 1){
            for (int i = 0; i <= slicer[1]; i++) {
                arr.add(num_list[i]);
            }
        }
        if(n==2){
            for (int i = slicer[0]; i < num_list.length; i++) {
                arr.add(num_list[i]);
            }
        }
        if(n==3){
            for (int i = slicer[0]; i <= slicer[1]; i++) {
                arr.add(num_list[i]);
            }
        }
        if(n==4){
            for (int i = slicer[0]; i <=slicer[1] ; i+=slicer[2]) {
                arr.add(num_list[i]);
            }
        }
        System.out.println(arr);
        answer = arr.stream().mapToInt(Integer::intValue).toArray();
        return answer;
    }
}

num_list의 a, b, c인덱스는 차례대로 0, 1, 2 인덱스를 의미하니까 이거에 맞춰서 인덱스 설정해 문제를 풀면 된다.

728x90