코린이의 소소한 공부노트

[프로그래머스/Lv.0] 리스트 자르기 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.0] 리스트 자르기

무지맘 2023. 5. 1. 19:37

1. Input, Output, Example

slicer에 담긴 정수를 차례대로 a, b, c라고 할 때, n에 따라 다음과 같이 num_list를 슬라이싱 하려고 한다.

// n = 1 : num_list0번 인덱스부터 b번 인덱스까지

// n = 2 : num_lista번 인덱스부터 마지막 인덱스까지

// n = 3 : num_lista번 인덱스부터 b번 인덱스까지

// n = 4 : num_lista번 인덱스부터 b번 인덱스까지 c 간격으로

- 올바르게 슬라이싱한 리스트를 반환

 

2. Constraint

1) n 1, 2, 3, 4 중 하나

2) slicer의 길이 = 3

3) slicer에 담긴 정수를 차례대로 a, b, c라고 할 때

   0 a b num_list의 길이 - 1

   1 c 3

   5 num_list의 길이 30

4) 0 num_list의 원소 100

 

3. Code

1) 첫 코드(2023/05/01)

import java.util.*;
class Solution {
    public int[] solution(int n, int[] slicer, int[] num_list) {
        int[] answer;
        if(n==1){
            answer = new int[slicer[1]+1];
            for(int i=0 ; i<answer.length ; i++)
                answer[i] = num_list[i];
        } else if(n==2){
            answer = new int[num_list.length-slicer[0]];
            for(int i=slicer[0] ; i<num_list.length ; i++)
                answer[i-slicer[0]] = num_list[i];
        } else if(n==3){
            answer = new int[slicer[1]-slicer[0]+1];
            for(int i=slicer[0] ; i<=slicer[1] ; i++)
                answer[i-slicer[0]] = num_list[i];
        } else{
            if((slicer[1]-slicer[0]+1)%slicer[2]==0)
                answer = new int[(slicer[1]-slicer[0]+1)/slicer[2]];
            else
                answer = new int[(slicer[1]-slicer[0]+1)/slicer[2] +1];
            for(int i=slicer[0], j=0 ; i<=slicer[1] ; i+=slicer[2], j++)
                answer[j] = num_list[i];
        }
        return answer;
    }
}