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

☑️ 문제

프로그래머스 181897

☑️ 풀이

  • 처음에는 substring()을 쓰기 위해 num_list을 문자열로 바꾼 뒤 로직을 실행하고, charAt(i)을 사용해서 다시 배열로 바꿔 리턴하였다. 이 방식은 배열의 원소가 한 자릿수면 가능하겠지만, 여기서는 0 ≤ num_list의 원소 ≤ 100이기 때문에 불가능했다.
  • 그래서 구간 내의 원소를 하나씩 배열에 담는 방식으로 변경했다.
  • 지금은 배열만 써서 했지만, 리스트를 쓰면 더 쉬워질 것 같다.
//시간: 0.33ms
//메모리: 78.2MB

import java.util.*;

class Solution {
    public int[] solution(int n, int[] slicer, int[] num_list) {
        int a = slicer[0];
        int b = slicer[1];
        int c = slicer[2];

        if (n == 1) {
            return slice(0, b, 1, num_list);
        } else if (n == 2) {
            return slice(a, num_list.length - 1, 1, num_list);
        } else if (n == 3) {
            return slice(a, b, 1, num_list);
        } else {
            return slice(a, b, c, num_list);
        }
    }

    public int[] slice(int start, int end, int interval, int[] arr) {
        int length = (int) Math.ceil((end - start) / interval) + 1;
        int[] answer = new int[length];
        int idx = 0;

        for (int i = start; i <= end; i += interval) {
            answer[idx++] = arr[i];
        }

        return answer;
    }
}


© 2021. All rights reserved.

yaejinkong의 블로그