누적값
구하기는 무조건 reduce
라고 생각했다. const solution = (n) => {
// n 이하의 모든 짝수를 배열로 만들기 - for문
// 배열.reduce로 누적값 구하기
let arr = [];
for (let i = 1; i <= n; i++){
if(i % 2 === 0){
arr.push(i)
}
}
const answer = arr.reduce((acc, cur) => acc + cur, 0)
return answer;
}
오류 해결
❓ reduce 메서드에서 '초기값'이란?
- 배열 누적값 구할 때 맨 처음의 값을 의미
- 명시해두지 않으면 기본적으로 배열의 첫 값이 기본으로 초기값으로 설정됨
✅ '초기값' 설정이 필요한 이유?!- 빈 배열에 대해 reduce를 호출하면, 초기값이 없을 때 오류가 발생
다른 풀이
1) +=
연산자 활용!
function solution(n) {
let answer = 0
for (let i = 1; i <= n; i++) {
if (i % 2 === 0) {
answer += i
}
}
return answer
}
2) for문에서 ++i가 아닌, i+=2
활용!
function solution(n) {
var answer = 0;
for(let i=2 ; i<=n ; i+=2)
answer += i;
return answer;
}
const solution = (numbers) => {
// 배열의 값들 다 더하기
// 배열 값 개수로 나누기
let sum = 0;
for (let i = 0; i < numbers.length; i++){
sum += numbers[i];
}
const answer = sum / numbers.length
return answer;
}
다른 사람 풀이 보니까 이번엔 또 reduce 쓰는게 더 효율적이었네.... ^^....
// 한 줄 풀이
const solution = (numbers) => numbers.reduce((acc,cur) => acc + cur, 0) / numbers.length
// 한 줄이 너무 길다면
const solution = (numbers) => {
return numbers.reduce((acc,cur) => acc + cur, 0) / numbers.length
}
const solution = (N) => {
// 숫자 -> 문자열로 만들기
// 문자열 자르기
// 숫자로 만들어서 누적값 구하기 (reduce)
return String(N).split('').reduce((acc, cur) => parseInt(acc) + parseInt(cur), 0)
}
리팩토링(?) !
+
붙여주기! (or *1
)최종 풀이
const solution = (N) => {
// 숫자 -> 문자열로 만들기
// 문자열 자르기
// 숫자로 만들어서 누적값 구하기 (reduce)
return String(N).split('').reduce((acc, cur) => acc + +cur, 0)
}