문제설명
: 정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
- 풀이(1) : 1 + 2 + 3 + 4 = 10을 return합니다.
- 풀이(2) : 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.
function solution(n) {
let arrn = String(n);
let arr = [];
for(let i=0;i<arrn.length;i++) {
arr.push(Number(arrn[i]))
}
let answer = arr.reduce((prev, cur) => {
return prev+cur;
}, 0);
console.log(answer);
return answer;
};
solution(123);
변수 arrn
) 변화시켜주었다. 이를 통해서 각각의 요소들을 배열 변수arr
에 담았다. 변수 arrn
를 for(반복)문을 통해서 각 요소들이 변수arr
에 추가되게 하였다. 변수arr
배열에 숫자열(Number)이 담겼다면, 쉽다. reduce
를 통해서 각 요소들을 하나씩 더해주면 된다. 결과는 통과이다. 모질라, reduce
reduce()는 배열에 대한 prototype 가운데 하나이다. 그런데 prototype이 무엇일까? 원형이라는 뜻으로, 상속받은 데이터를 말한다고 한다. 즉 reduce()는 배열에서 상속받은 데이터들을 다루는 메소드라는 이야기이다.
모질라의 설명에 따르면, reduce() 메소드는 배열의 각 요소들을 하나의 결과값으로 반환하는 기능을 수행한다. 즉, 자동더하기 계산기(누적계산의 결과 값
) 정도로 코린이 수순에서는 이해하자.
구문을 살펴보면 아래와 같다.
arr.reduce((누계, 변수를매개변수로받음) => {return 누계+배열의각요소;}, 초기값);
1.누계
와변수를매개변수로받음
의 매개변수가 각각 선언된다.
2.=>
1번의 내용을 이제 함수에서 처리할 것인데return
으로누계
와변수를매개변수로받은 - 배열의 각요소
를 반복적으로 더해주며 실행한다.
3. 이때,누계
의 처음 값은 초기값으로 설정한 값이다. 위의 코드에서 필자는 0으로 초기값을 설정해주었다.
4. 배열 = [1, 2, 3, 4]
5. 초기값누계
가 0일 때,배열의 첫번째 '1'
이 올라오고 해당 값이 return되면서 더해진다. 다음은 과정에서는누계
가 1이 될 것이고,배열의 첫번째 '2'
가 올라와서 return되면서 더해질 것이다. 이러한 과정을 배열의 길이만큼 수행하며, 결과로 "10"이 출력되는 배열메소드가 reduce()이다.
function solution(n) {
return n.toString().split("").reduce((r, c) => r + Number(c), 0);}
같은 reduce()메소드를 사용했는데, 역시 한 줄 만에 끝내버린 사람들이 존재했다. 위의 코드는 내가 숫자열 자료형을 문자열로 변환해서 반복문으로 자른 것을 두메소드로 끝내버렸다.
아는 것이 전부는 아니다. 활용까지 할 줄 알아야 아는 것이지 않을까? 다른 사람의 풀이는 기존에 알고 있는 부분이었지만, 1/3만 활용했다. 이게 현재 실력인가보다.