[JavaScript] Lv0 - n개 간격의 원소들

Moon·2025년 1월 24일
0
post-thumbnail

n개 간격의 원소들

문제 설명

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


제한사항

  • 5 ≤ num_list의 길이 ≤ 20
  • 1 ≤ num_list의 원소 ≤ 9
  • 1 ≤ n ≤ 4

입출력 예

num_listnresult
[4, 2, 6, 1, 7, 6]2[4, 6, 7]
[4, 2, 6, 1, 7, 6]4[4, 7]

입출력 예 설명

입출력 예 #1

  • [4, 2, 6, 1, 7, 6]에서 2개 간격으로 저장되어 있는 원소들은 [4, 6, 7]입니다.

입출력 예 #2

  • [4, 2, 6, 1, 7, 6]에서 4개 간격으로 저장되어 있는 원소들은 [4, 7]입니다.

function solution(num_list, n) {
    // num_list에서 n개 간격으로 원소를 선택하여 반환
    return num_list.filter((_, index) => index % n === 0);
}

// 입출력 예 테스트
console.log(solution([4, 2, 6, 1, 7, 6], 2)); // [4, 6, 7]
console.log(solution([4, 2, 6, 1, 7, 6], 4)); // [4, 7]

코드 설명

1. filter 메서드 사용:

  • num_list.filter((_, index) => index % n === 0):
    • 배열의 각 요소를 순회하며 조건에 맞는 요소만 선택합니다.
    • 여기서 _는 현재 요소의 값을 나타내며, 이 문제에서는 값 자체를 사용하지 않으므로 _로 표시합니다.
    • index % n === 0 조건을 만족하는 인덱스의 요소만 포함합니다.

2. 간격 계산:

  • index % n === 0:
    • indexn으로 나눈 나머지가 0인 경우, 해당 요소가 n개 간격에 해당합니다.
    • 예:
      • n = 2: 0, 2, 4, ...의 인덱스 요소 선택.
      • n = 4: 0, 4, ...의 인덱스 요소 선택.

3. 결과 반환:

  • 조건에 맞는 요소들로 구성된 배열을 반환합니다.

간격 계산에 대한 추가설명

index % n === 0의 의미

이 조건은 배열의 인덱스를 n으로 나눈 나머지가 0인지 확인하는 것입니다. 수학적으로, 이는 "n으로 나누어 떨어지는 인덱스"를 의미합니다. 이러한 방식으로 간격을 계산하면, 특정 간격으로 배열의 요소를 선택할 수 있습니다.


index % n === 0을 사용하는가?

  1. 나머지가 0인 경우만 선택:
    • 예를 들어, n = 3인 경우:
      • 인덱스 0, 3, 6, ...과 같이 3의 배수인 인덱스만 선택됩니다.
      • 나머지가 0인 경우는 수학적으로 k * n 형태(즉, n의 배수)로 표현됩니다.
    • 따라서 index % n === 0은 주어진 간격(n)에 해당하는 요소를 정확히 선택합니다.
  2. 시작점이 0:
    • 배열의 인덱스는 항상 0부터 시작하므로, 간격 계산을 간단히 처리할 수 있습니다.
    • 첫 번째 원소(인덱스 0)는 항상 포함됩니다.
  3. n 간격 유지:
    • 조건에 따라 n 간격으로 인덱스를 건너뛰면서 요소를 선택합니다.
    • 이는 배열의 요소를 일정한 간격으로 샘플링하는 데 유용합니다.

간격 계산의 적용

예제 1: n = 2

  • 배열: [4, 2, 6, 1, 7, 6]
  • 계산:
    • 인덱스 0 % 2 === 0 → 선택.
    • 인덱스 1 % 2 !== 0 → 건너뜀.
    • 인덱스 2 % 2 === 0 → 선택.
    • 인덱스 3 % 2 !== 0 → 건너뜀.
    • 인덱스 4 % 2 === 0 → 선택.
    • 인덱스 5 % 2 !== 0 → 건너뜀.
  • 결과: [4, 6, 7].

시각적 이해

간격 선택을 시각화하면 다음과 같습니다:

  • n = 2:
    [4, 2, 6, 1, 7, 6]
     ^     ^     ^
    
  • n = 4:
profile
MOON.DEVLOG

0개의 댓글