본문 바로가기
Coding/Coding Test

[Coding Test]n개 간격의 원소들(java, python,프로그래머스)

by Thompson 2024. 8. 26.
728x90
문제 설명

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

 

제한사항
  • 5 ≤ num_list의 길이 ≤ 20
  • 1 ≤ num_list의 원소 ≤ 9
  • 1 ≤ n ≤ 4

입출력 예 #1
  • [4, 2, 6, 1, 7, 6]에서 2개 간격으로 저장되어 있는 원소들은 [4, 6, 7]입니다.
입출력 예 #2
  • [4, 2, 6, 1, 7, 6]에서 4개 간격으로 저장되어 있는 원소들은 [4, 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;
    }
}
  • num_list.length: 배열의 전체 길이입니다.
  • n - 1: 이 값은 배열이 n으로 나누어 떨어지지 않는 경우를 보정합니다. 예를 들어, 배열의 길이가 5이고 n = 2라면, 5개의 원소 중에서 3개(인덱스 0, 2, 4)가 선택되는데, 이 계산을 정확히 하려면 5 + 2 - 1을 2로 나눈 값을 사용해야 합니다.
  • / n: 최종적으로, 선택할 수 있는 원소의 수를 얻기 위해 이 값을 n으로 나눕니다.
공식 예제
  • 예제 1:
    • num_list.length = 6
    • n = 2
    • size = (6 + 2 - 1) / 2 = 7 / 2 = 3 (정수 나누기 결과는 3입니다)
  • 예제 2:
    • num_list.length = 10
    • n = 3
    • size = (10 + 3 - 1) / 3 = 12 / 3 = 4

이 공식은 n 간격으로 원소를 선택할 때, 선택된 원소들의 수를 정확하게 계산하는 방법입니다.

 

Java
class Solution {
    public int[] solution(int[] num_list, int n) {
        int count = 0;
        for (int i = 0; i < num_list.length; i += n) {
            count++;
        }

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

        return answer;
    }
}
Python
def solution(num_list, n):
    answer = []
    for i in range(0, len(num_list), n):
        answer.append(num_list[i])
    return answer