[JavaScript] 프로그래머스 자릿수 더하기

Gaeun·2022년 11월 11일
0
post-custom-banner

자릿수 더하기

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

나의 풀이

정답률이 87%이길래 쉬운 문제라고 생각했고, 문제 설명을 읽었을 때에도 쉽길래 '음, 쉬운 문제군 ㅋㅋ' 하면서 풀었다가 자꾸만 막혀서 자괴감을 주었다.

처음엔 이러한 방식으로 풀어나갔었다.
1. 일단 숫자n을 배열에 넣어야겠다고 생각해서 spread syntax를 사용하였으나 TypeError: n is not iterable가 나와 당황했다. 그래서 [...toString(n)]으로 다시 썼었다.
2. 이후 배열을 순회하며 하나씩 더하려고 했으나 이는 두 수의 모든 경우의 값을 구하는 것이었다.

그러다가 다시 처음부터 생각해보자는 마인드로, 숫자를 배열에 "숫자로" 넣는 것부터 생각해보았다. spread syntax 말고는 하나도 생각이 나지 않아서 convert a number into an array로 검색하여 이러한 방법을 찾아냈다.

https://melvingeorge.me/blog/convert-number-to-array-javascript

위 링크는 숫자를 문자열로 배열에 넣는 방법, 숫자로 배열에 넣는 방법 두 가지 모두 나와있었고 나는 숫자를 배열에 넣는 방법을 사용하였다. 분명 from메서드는 알고 있었는데 이럴 때 생각이 나지 않아 더 많이 공부해야겠다고도 생각했다.

숫자를 배열에 넣을 때에는 매개변수로 String(배열)을 활용하며, 이를 숫자로 형변환하기 위해서는 Number을 쓴다는 것을 배웠다.

이후, reduce 메서드를 활용하여 모든 수를 더하는 방법을 생각해냈고, 아래와 같이 제출하여 통과했다.

function solution(n) {
  const nArr = Array.from(String(n), Number)
  const answer = nArr.reduce((prev, curr) => prev + curr, 0)
  return answer;
}

다른 사람의 풀이

function solution(n) {
  return n
    .toString()
    .split("")
    .reduce((acc, cur) => acc + Number(cur), 0);
}

나도 처음에는 split('')을 생각했으나 자꾸 되지 않았는데 이는 숫자를 문자열로 형변환하지 않았기 때문임을 알게 되었다. 숫자를 배열에 넣을 때에는 형변환을 하고 넣어야한다!는 것을 알게 된 문제였다.

profile
🌱 새싹 개발자의 고군분투 코딩 일기
post-custom-banner

0개의 댓글