[코딩테스트] JavaScript/[코테] 프로그래머스

[프로그래머스 / JS ] Lv.0 / 181887 : 홀수 vs 짝수

jini-dev 2025. 1. 9. 09:00
SMALL

홀수 vs 짝수(링크)

문제 설명
정수 리스트 num_list가 주어집니다. 가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요. 두 값이 같을 경우 그 값을 return합니다.
제한사항
  • 5 ≤ num_list의 길이 ≤ 50
  • -9 ≤ num_list의 원소 ≤ 9
입출력 예

num_list  result
[4, 2, 6, 1, 7, 6]  17
[-1, 2, 5, 6, 3]  8

입출력 예 #1

  • 홀수 번째 원소들의 합은 4 + 6 + 7 = 17, 짝수 번째 원소들의 합은 2 + 1 + 6 = 9 이므로 17을 return합니다.

입출력 예 #2

  • 홀수 번째 원소들의 합은 -1 + 5 + 3 = 7, 짝수 번째 원소들의 합은 2 + 6 = 8 이므로 8을 return합니다.

 

문제 풀이

function solution(num_list) {
    const oddSum = num_list.filter((_,idx)=>!(idx%2)).reduce((a,c)=>a+c,0); // 홀수번째 원소들의 합
    const evenSum = num_list.filter((_,idx)=>(idx%2)).reduce((a,c)=>a+c,0); // 짝수번째 원소들의 합
    return evenSum >= oddSum ? evenSum : oddSum;
}

evenSum과 oddSum 변수로 각각 num_list 배열의 filter 메소드를 사용하여 인덱스 가 짝수인경우 값들의 합과 홀수인 경우의 값들의 합을 선언했다.

 

filter 메소드의 두번째 인자는 인덱스 값으로 !(idx%2) 는 인덱스 값이 짝수인 경우를 말한다.

이때 첫번째 입출력 예의  const evenSum = num_list.filter((_,idx)=>!(idx%2)) 는 [4, 6, 7] 인데

문제에서 가장 첫번째 원소를 1번 원소라고 했기 때문에 변수 명을 oddSum으로 두었다.

 

삼항연산자를 사용하여 짝수 번째 원소들의 합이 홀수 번째 원소들의 합보다 큰경우 evenSum을, 작은경우 oddSum을 반환하도록 했다.

LIST