프로그래머스 n개 간격의 원소들

KIMYEONGJUN·2026년 6월 20일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

내가 이 문제를 보고 생각해본 부분

solution 메서드는 입력 배열 num_list와 간격 n을 받아서, n 간격으로 원소들을 추출해 새 배열을 반환하는 기능이다.
size 변수는 결과 배열의 크기를 계산하는데, (num_list.length + n - 1) / n 연산으로 올림 처리를 하여 충분한 크기를 확보한다.
answer 배열을 할당한 뒤, 인덱스 변수 index를 0으로 초기화한다.
for 반복문은 i를 0부터 시작해서 n씩 증가시키며 num_list의 해당 원소를 answer에 차례로 복사한다.
반복이 끝나면 완성된 배열 answer를 반환한다.
main 메서드는 프로그램 실행 진입점이다.
Main57 클래스의 인스턴스를 생성한다.
두 가지 예시 배열과 간격 값을 준비한 후, solution 메서드를 호출해 결과 배열을 얻는다.
결과 배열은 arrayToString 메서드를 통해 사람이 보기 좋은 문자열 형태로 변환된다.
변환한 문자열을 System.out.println으로 출력한다.
arrayToString 메서드는 int[] 배열을 문자열로 변환하는데 사용된다.
[, ] 로 감싸고, 각 원소는 쉼표와 공백으로 구분하여 연결한다.
이를 통해 배열이 [4, 6, 7] 같은 형태로 출력된다.

코드로 구현

class Solution {
    public int[] solution(int[] num_list, int n) {
        int size = (num_list.length + n - 1) / n;
        int[] answer = new int[size];

        int index = 0;
        for (int i = 0; i < num_list.length; i += n) {
            answer[index++] = num_list[i];
        }
        return answer;
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 n개 간격의 원소들
public class Main57 {
    public int[] solution(int[] num_list, int n) {
        int size = (num_list.length + n - 1) / n;
        int[] answer = new int[size];

        int index = 0;
        for (int i = 0; i < num_list.length; i += n) {
            answer[index++] = num_list[i];
        }
        return answer;
    }

    public static void main(String[] args) {
        Main57 sol = new Main57();

        int[] num_list1 = {4, 2, 6, 1, 7, 6};
        int n1 = 2;
        int[] result1 = sol.solution(num_list1, n1);
        System.out.println(arrayToString(result1));

        int[] num_list2 = {4, 2, 6, 1, 7, 6};
        int n2 = 4;
        int[] result2 = sol.solution(num_list2, n2);
        System.out.println(arrayToString(result2));
    }

    private static String arrayToString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            sb.append(arr[i]);
            if (i != arr.length -1) {
                sb.append(", ");
            }
        }
        sb.append("]");
        return sb.toString();
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글