[알고리즘문제풀기] 리스트 자르기

silver's avatar
Sep 23, 2025
[알고리즘문제풀기] 리스트 자르기

문제

내가 작성한 정답

import java.util.*; import java.util.stream.*; class Solution { public int[] solution(int n, int[] slicer, int[] num_list) { List<Integer> answer = new ArrayList<>(); for(int i = (n==1)?0:slicer[0]; i<= ((n==2)?num_list.length-1:slicer[1]); i=i+((n==4)?slicer[2]:1)){ answer.add(num_list[i]); } 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; } } import java.util.Arrays; import java.util.stream.IntStream; class Solution { public int[] solution(int n, int[] slicer, int[] num_list) { int[] answer = null; int a = slicer[0], b = slicer[1], c = slicer[2]; switch (n) { case 1: answer = Arrays.copyOf(num_list, b + 1); break; case 2: answer = Arrays.copyOfRange(num_list, a, num_list.length); break; case 3: answer = Arrays.copyOfRange(num_list, a, b + 1); break; case 4: answer = IntStream.range(0, (b - a) / c + 1).map(i -> num_list[a + i * c]).toArray(); break; } return answer; } }
Share article

silver