개발하는 무민

[프로그래머스-Level1] 자릿수 더하기_JavaScript + map, reduce, parseInt 본문

Algorithm/Programmers

[프로그래머스-Level1] 자릿수 더하기_JavaScript + map, reduce, parseInt

무민_ 2022. 6. 17. 08:08

자릿수 더하기

문제 설명

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

제한사항
  • N의 범위 : 100,000,000 이하의 자연수

입출력 예
N                                                     answer
123 6
987 24

입출력 예 설명

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

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

 

풀이

// 입력받은 숫자를 분해해서 각각 더한 값을 반환하기

function solution(n)
{
    let arr = n.toString().split("").map(x => parseInt(x));
    // 입력받은 n을 toString을 통해 문자열로 만들고, split()으로 분해한 뒤
    // map을 사용해서 10진수로 변경한다.
    // parseInt() -> 문자열을 정수(Int)로 변환시켜주는 함수
    
    return arr.reduce((acc, cur) => acc + cur, 0);
    // 배열의 각 요소들을 누적해서 더해야 하기 때문에 reduce() 사용
    // reduce() 배열의 요소들을 순회하며 반복적인 연산 수행을 하는데,
    // 누산값을 계산해주는 역할을 한다.
    // acc : 누산값
    // cur : 현재 요소값
    // acc + cur : 다음 누산값
    // 0 : 초기 누산값
    
}

입력 받은 값을 문자열로 만들어서 한 글자씩 분해 한 뒤, map을 통해 배열로 만들고 parseInt로 정수로 변환해준다.

리턴 시에는 누적 값 계산을 위해 reduce를 사용했다.

 

 

parselnt()

문자열을 정수로 변환시켜주는 함수

얼핏보기에는 eval() 함수나 Number() 함수와 비슷해 보이지만,

parseInt() 함수는 매개변수를 이용하여 8진수, 16진수 등의 수로도 변환이 가능하며,

숫자형과 문자형이 혼합된 문자열에서 숫자형 뒤에오는 문자형은 0을 반환하여 숫자만 출력한다.

또, 소수인 경우에는 소숫점 이하를 버리고 정수만 반환함.

 

형식은 다음과 같다.

parseInt( 숫자형문자열 , [진수] )

(진수는 생략 가능한듯)

 

reduce()

배열의 요소들을 순회하면서 누적 값을 계산해주는 메서드

 

형식은 다음과 같다.

// reduce
const numbers = [1, 2, 3, 4];

numbers.reduce((누산값, 현재요소값, 현재요소의index, 현재배열) => {
  return 다음누산값;
}, 초기누산값);

3, 4번째 파라미터는 생략이 가능하다.