[Programmers] 자릿수 더하기

그래도 해야지·2023년 4월 5일
0

Programmers

목록 보기
5/40
post-thumbnail

문제 설명
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요

🤔 해설

  1. 정수의 자릿수를 더하려면 배열로 만들 필요가 있어서 정수 => 문자열 => 배열 순서로 만들어주었다.
// 정수를 문자열로 변환
const str = String(n)
  1. 배열의 모든 요소들을 숫자로 변경해주기
const toNum = (element) => Number(element)
  1. 숫자를 배열로 변경해주기
    어제 배웠던 split함수를 써야함
// 01234만 출력되는데 여기서 원소 하나하나를 숫자로 만들어주기위해 map함수도 사용함
const newArr = str.split('').map(toNum) // [ 1, 2, 3, 4 ]
  1. 배열로 잘 바꼈으니 reduce함수를 이용하여 배열들을 합친다.

✅ reduce함수 공식

  • 배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);
const answer = newArr.reduce((acc, cur, i) => {
        return acc+cur
    }, 0)

✅ 답

function solution(n) {
    const str = String(n)
    const mapfn = (arg) => Number(arg);
    const newArr = str.split('').map(mapfn)
    const answer = newArr.reduce((acc, cur, i) => {
        return acc+cur
    }, 0)
    return answer;
}

🔑 다른 풀이

function solution(n) {
    return answer = String(n).split('').reduce((acc, cur) => acc + cur * 1, 0)
}
  • n의 type을 string으로 바꿔준다.
  • 문자열에 쓰는 메서드인 split을 사용하여, 각 자릿수 별로 쪼개서 배열을 만들어준다. ex) 123 => ['1', '2', '3']
  • 배열에 사용하는 메서드인 reduce를 사용해 각 자릿수의 합을 구해줄 수 있다.
  • 현재 reduce의 cur값은 문자열이기 때문에 숫자처리를 해줘야 함
    - parseInt(cur), Number(cur), cur * 1 이런 방법들로 숫자로 변경할 수 있음

출처
https://velog.io/@hye_rin/JavaScript-Programmers-Lv.1-%EC%9E%90%EB%A6%BF%EC%88%98-%EB%8D%94%ED%95%98%EA%B8%B0

0개의 댓글