[프로그래머스] “배열의 길이에 따라 다른 연산하기” : JS - 배열의 길이와 인덱스의 홀짝이 다른 경우

신혜린·2023년 10월 20일
0

알고리즘(javascript)

목록 보기
19/21
post-thumbnail

나의 풀이

function solution(arr, n) {
    let answer = [];

    if (arr.length % 2 == 0) {
        arr.map((x,idx) => {
            if (idx % 2 != 0) { 
                answer.push(arr[idx] + n) 
            } else answer.push(arr[idx])
        })
    } else {
        arr.map((x,idx) => {
            if (idx % 2 == 0) { 
                answer.push(arr[idx] + n) 
            } else answer.push(arr[idx])
        })
    }

    return answer;
}
  • 너무 길 - 다.

모범답안

const solution = (arr, n) => arr.map((num, idx) => (
    arr.length % 2 !== idx % 2
    ? num + n
    : num
))
  • arr.map((num, idx) => : 배열 arr의 각 요소에 대해 반복 작업을 수행하기 위함. 배열의 각 요소를 순회하며 지정된 함수를 호출하고 그 결과로 새로운 배열을 생성한다.

  • arr.length % 2 !== idx % 2 : 현재 처리 중인 요소의 인덱스idx와 배열의 길이 arr.length를 비교한다.

    ⭐️⭐️⭐️ 배열의 길이와 현재 요소의 인덱스를 비교하는 것은 현재 요소가 홀수 번째 요소 혹은 짝수 번째 요소인지 확인하는 용도.

    • arr.length % 2는 배열 arr의 길이가 홀수인지 아닌지를 판단한다.
      홀수인 경우 1을 반환하고 짝수인 경우 0을 반환한다.
    • idx % 2는 현재 처리 중인 요소의 인덱스가 홀수 위치에 있는지 아닌지를 판단한다. 홀수 위치인 경우 1을 반환하고 짝수 위치인 경우 0을 반환합니다.

    ➡️ arr.length % 2 !== idx % 2는 이 두 조건이 서로 다르면, 현재 요소가 처리해야 하는 위치와 일치하지 않는 경우를 나타낸다.

  • ? num + n : num : 배열의 길이와 idx의 짝홀 경우의 수가 다른 경우 (true), 해당 요소에 numn을 더하고, 그렇지 않으면 num 그대로를 반환.



배열의 길이와 인덱스의 숫자가 각각 홀수의 경우가 다른 경우를 arr.length % 2 !== idx % 2 로 비교해서 푸는 모습이 굉장히 인상적이다!

profile
개 발자국 🐾

0개의 댓글