본문 바로가기
알고리즘/[프로그래머스] JAVA

[코딩 기초 트레이닝] 리스트 자르기

by 코딩맛집 2023. 12. 22.

문제 :

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

 

프로그래머스

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

programmers.co.kr

 

 

해결:

import java.util.*;

class Solution {
    public int[] solution(int n, int[] slicer, int[] num_list) {
        List<Integer> answer = new ArrayList<>();
        int a = slicer[0];
        int b = slicer[1];
        int c = slicer[2];
        
        switch(n) {
            case 1:
                for (int i = 0; i <= b; i++) {
                    answer.add(num_list[i]);
                }
                break;
            case 2:
                for (int i = a; i < num_list.length; i++) {
                    answer.add(num_list[i]);
                }
                break;
            case 3:
                for (int i = a; i <= b; i++) {
                    answer.add(num_list[i]);
                }
                break;
            case 4:
                for (int i = a; i <= b; i += c) {
                    answer.add(num_list[i]);
                }
                break;
        }
        return answer.stream().mapToInt(i->i).toArray();
    }
}

 

다른 사람 풀이:

class Solution {
    public int[] solution(int n, int[] slicer, int[] num_list) {
        int start = n == 1 ? 0 : slicer[0];
        int end = n == 2 ? num_list.length - 1 : slicer[1];
        int step = n == 4 ? slicer[2] : 1;
        int[] answer = new int[(end - start + step) / step];
        for (int i = start, j = 0; i <= end; i += step) {
            answer[j++] = num_list[i];
        }
        return answer;
    }
}