[프로그래머스] 길이에 따른 연산


문제 설명

정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 2 ≤ num_list의 길이 ≤ 20
  • 1 ≤ num_list의 원소 ≤ 9

입출력 예

num_listresult
[3, 4, 5, 2, 5, 4, 6, 7, 3, 7, 2, 2, 1]51
[2, 3, 4, 5]120

입출력 예 설명

입출력 예 #1

  • 리스트의 길이가 13이므로 모든 원소의 합인 51을 return합니다.

입출력 예 #2

  • 리스트의 길이가 4이므로 모든 원소의 곱인 120을 return합니다.

나의 풀이

function solution(num_list) {
  if (num_list.length >= 11) {
    return num_list.reduce((a, b) => a + b, 0);
  } else {
    return num_list.reduce((a, b) => a * b, 1);
  }
}

나의 두번째 풀이(Code Refactoring)

function solution(num_list) {
  return num_list.length >= 11
    ? num_list.reduce((a, b) => a + b, 0)
    : num_list.reduce((a, b) => a * b, 1);
}

참고 할 만한 다른 사람의 코드

function solution(num_list) {
  let answer = 0;
  if (num_list.length <= 10) {
    answer = 1;
    for (i = 0; i < num_list.length; i++) {
      answer *= num_list[i];
    }
  } else {
    for (i = 0; i < num_list.length; i++) {
      answer += num_list[i];
    }
  }
  return answer;
}