코딩테스트 | (JavaScript) 프로그래머스 : 자릿수 더하기

trevor1107·2021년 8월 16일
0

✅문제

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

❕ 제한사항

  • N의 범위 : 100,000,000 이하의 자연수

🎹📢입출력 예제

✍풀어보기

const solution = (n) => (n+"").split('').reduce((acc,cur)=> acc += +cur, 0);

이번 문제에서 각 자리수의 값을 누적시키는 부분에서 reduce()가 제일 먼저 생각났다. 주의 할 점은 두번째 매개변수는 acc의 초기 값 설정을 나타내는데 0을 넣어주지 않는다면, 첫번째 요소의 값으로 설정되는데, 위 같은 경우에는 문자열로 인식해서 원하지 않는 값이 나올 수 있다.

그리고 자연수 n을 문자열로 바꿔주는 부분을 전과 문법을 다르게 사용 했지만 같은 기능이다.
(n+"") == n.toString()
이번에는 문자열을 숫자로 바꿔주는 다른 방법을 사용했다. 아래는 모두 같은 기능의 예시이다.
parseInt(cur), +"cur", "cur"*1, "cur"*/1, "cur">>0

그래도 나는 toString(), parseInt()을 사용하는 것이 더 가독성이 좋아 선호한다.


🎈다른 사람의 풀이

function solution(n,a=0,b=0) {
    return String(n).length==a?b:solution(n,a+1,b+=String(n)[a]*1);
}

으어~~ 항상 재귀만 보면 분석하는데 시간이 좀 걸린다. 재귀함수 울렁증이.. 어디보자
n을 문자열로 변환 했을때의 길이 즉, 자리수 만큼 재귀를 반복시키고 b에게 값을 누적시킨다.
뭐 굳이 이렇게 풀 필요가 있긴 한가 싶긴하지만 재귀함수를 싫어하는 사람으로서 좀 더 친해지고 싶은 마음에 분석해보았다!!



참고 자료 및 사이트 (감사합니다)

profile
프론트엔드 개발자

0개의 댓글