Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

David의 블로그

프로그래머스 - 리스트 자르기 본문

프로그래밍/코딩

프로그래머스 - 리스트 자르기

David 리 2024. 6. 29. 11:50

문제 설명>

정수 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 함수를 완성해주세요.

 

 

내 생각>

정수 n에 분기문을 만들어서 for문에서 쓰려는 시작인덱스 값과 마지막 인덱스 값을 추출한다.

또 나는 n == 4일 때, for문의 증감연산자 값도 지정해줘야 했기에, 

최종적으로 시작/마지막 인덱스 값과 증감연산자 값을 초기화 해줬다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int stIdx = 0;
        int endIdx = 0;
        int add = 1;
        List<Integer> intList = new ArrayList<>();
        if (n == 1) {
            stIdx = 0;
            endIdx = slicer[1];
        } else if (n == 2) {
            stIdx = slicer[0];
            endIdx = num_list.length - 1;
        } else if (n == 3) {
            stIdx = slicer[0];
            endIdx = slicer[1];
        } else {
            stIdx = slicer[0];
            endIdx = slicer[1];
            add = slicer[2];
        }
        
        for (int i = stIdx; i <= endIdx; i = i + add) {
            intList.add(num_list[i]);
        }
        answer = intList.stream().mapToInt(i -> i).toArray();
        System.out.println(Arrays.toString(answer));
cs

for문으로 슬라이스 된 값을 List<>에 담아주고, 마지막으로 List를 array로 형변환 시켜 줬다.