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

Parkboss·2022년 9월 16일
0

코딩테스트

목록 보기
11/19

✅문제

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

❕ 제한사항

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

📢 입출력 예제

📢 입출력 예 설명

입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.


💻 내 풀이

function solution(n)
{
    var answer = 0;
    var arr = String(n).split("");
    
    for(let i =0; i < arr.length; i++){
        answer += Number(arr[i])
    }
    return answer;
}

이 방법은 하샤드 수 풀이 때 방법이 생각나서 똑같이 코드를 작성했다.
하샤드 수는 떨어지는 값이면 true 값을 출력하는 문제였다.

💻 다른 사람 풀이

function solution(n){
  return n.toString().split("").reduce((prev,cur) => prev + parseInt(cur),0);
  // (입출력 예 첫번째)
  // prev는 0 값을 가져온다.
  // 0 + 1 = 1
  // 1 + 2 = 3
  // 3 + 3 = 6
  
  // (입출력 예 두번째)
  // 0 + 9 = 9
  // 9 + 8 = 17
  // 17 + 7 = 24
}

많은 다른 방법 풀이가 있었지만 이 풀이가 내가 잘 이해할 수 있어서 가져왔다.

  • 내가 푼 방법은 String(n).split("") arr 변수에 할당하는 코드이다.
  • 다른 사람 풀이에서는 n.toString().split("") 변수에 저장하지 않고 바로 n.toString 하는 방법이 더 간단하고 코드 길이도 줄일 수 있는 좋은 방법인 것 같다.
  • reduce의 고차 함수를 사용하여 prev, cur 인자를 가져와서 parseInt를 사용하여 값을 더해주는 풀이 방법이다. 이건 정말 좋은 방법인 것 같다.
  • reduce는 배열의 각 요소를 순회하며 callback 함수의 실행 값을 누적하여 하나의 결과값을 반환하는 것이다.

여기서! parseInt란?

자바스크립트에 내장되어 있는 함수로, 말 그대로 문자열을 파싱하여 문자열에 포함된 숫자를 찾아서 number로 형변환을 시켜준다.

let age = parseInt('40');
console.log(age, typeof age); // 30, number

let str = parseInt('123숫자들');
console.log(str); // 123
  • 위에 나의 풀이에서 Number를 왜 사용하는지 그때 당시는 이해가 안 갔는데 Number를 쓰는 이유는 parseInt처럼 넘버로 형 변환을 시켜주는 것이다.
profile
ur gonna figure it out. just like always have.

0개의 댓글