본문 바로가기
LeetCode

1281. Subtract the Product and Sum of Digits of an Integer

by 싼쵸 2022. 6. 2.
반응형

문제

n의 요소를 하나씩 분리 후 곱한 결과와 더하기 한 결괏값을 빼기 후 그 값을 리턴하는 문제다.

 

내 현재 풀이

/**
 * @param {number} n
 * @return {number}
 */
var subtractProductAndSum = function(n) {

        n = n.toString();
        n = n.split('');

       let sum = n.reduce((a,c)=> a+Number(c),0)
    let product = n.reduce((a,c)=> a * Number(c),1)
    console.log(sum)

           return product - sum 
};

n이 처음에 int 형여서 split 함수를 사용하기 위해서 string 형으로 변환을 했다.
그다음 split를 사용해서 배열로 변환 후 reduce 함수를 이용해서 곱한, 더한 값을 구한 후 뺀 값을 리턴했다.

 

내 예전 풀이

/**
 * @param {number} n
 * @return {number}
 */
function numToInt(num){

    return (num + '').split('');
};

var subtractProductAndSum = function(n) {
    let res = [];
    let arr = numToInt(n);
    let numArr = arr.map(data=> Number(data));
    res[0] = numArr.reduce((arr,curr)=> arr * curr);
    res[1] = numArr.reduce((arr,curr)=> arr + curr);
    return res[0] - res[1];
};

풀이는 크게 다르지 않지만, 현재 풀이가 조금 더 간결하다는 느낌을 받았다 ㅋㅋ

 

다른 사람 풀이

var subtractProductAndSum = function(n) {

    const digits = Array.from(String(n), Number)
    const sum = digits.reduce((a,b) => a+b)
    const product = digits.reduce((a,b) => a*b)
    return product-sum
};
Array.from에 눈길이 가서 찾아봤다.
Array.from() 메서드는 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 Array 객체를 만듭니다.
출처 - MDN

참 다양한 함수가 있는 것 같다. 똑같은 결과를 다양한 방식으로 만들수 있다는 게 개발의 매력인 건가?? ㅋㅋ

 

반응형

댓글