[프로그래머스/181897] 리스트 자르기
in Study / Coding Test
☑️ 문제
☑️ 풀이
- 처음에는
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;
}
}