정수가 담긴 리스트 num_list가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요.
2 ≤ num_list의 길이 ≤ 20
1 ≤ num_list의 원소 ≤ 9
num_list | result |
---|---|
[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) {
let add = 0;
let mul = 1;
let result = 0;
for(let i in num_list){
if(num_list.length >= 11){
add += num_list[i]
result = add
}else{
mul *= num_list[i]
result = mul
}
}
return result
}
for문
으로 num_list
를 순회하고
만약 num_list.length
의 길이가 11 이상인 경우
전부 더한 후 result
라는 변수를 만들어줘
result
에 해당 결과 값을 할당해 리턴해 주었다.
10이하인 경우도 동일하게 해주었다.
초반엔 변수를 하나만 선언해 주었다.
그랬더니 하나는 맞고 하나는 틀려서 그러면 두개의 변수를 선언하면 되겠다!...했지만
그럼 어떻게 조건을 줘야지? 고민을 하다 결과값을 넣어줄 변수를 하나 더 선언해 할당해 주는 방법으로 수정했다!
num_list.reduce((acc, cur) => {
if(num_list.length >= 11){
return acc + cur
}
return acc * cur
})
reduce함수를 통해 좀더 깔끔하게 작성할 수 있었다.
처음에 작성한 코드가 틀린 줄 알고 콘솔창에 테스트 했지만
잘 나와서 뭐지..? 이러고 있었다..
왜 안 되는지 아시는 분... 댓글 좀..🥺
reduce메서드 앞에 return을 안 붙여서 그런게 아닐까 싶다...
reduce 작성 법
배열.reduce((누적값, 현재값, 인덱스, 요소) => {return 값}, 초기값)
여러 방법을 생각해 풀어보려고 한다.
배열 등이 나왔을 때 무작정 for문으로 풀어보지 말고
map, reduce, filter, find 등의 메서드로 사용한 풀이도 해보자 하고 있다.
실무에서는 for문 보단 메서드를 이용해 사용하지 않을까 싶다.
.
.
.
처음 부터 난이도가 높은 문제를 풀어서 하기 싫고 무슨 뜻인지 몰랐는데
난이도를 낮춰 기초 부터 문제를 풀고 통과하니 재미 있고 흥미가 생긴다!
열심히 꾸준히 해보자!
map, redue 메서드
https://www.zerocho.com/category/JavaScript/post/5acafb05f24445001b8d796d