반응형
문제
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
참 다양한 함수가 있는 것 같다. 똑같은 결과를 다양한 방식으로 만들수 있다는 게 개발의 매력인 건가?? ㅋㅋ
반응형
'LeetCode' 카테고리의 다른 글
1342. Number of Steps to Reduce a Number to Zero (0) | 2022.06.05 |
---|---|
1365. How Many Numbers Are Smaller Than the Current Number (0) | 2022.06.03 |
1431. Kids With the Greatest Number of Candies (0) | 2022.05.31 |
771. Jewels and Stones (0) | 2022.05.30 |
1512. Number of Good Pairs (0) | 2022.05.28 |
댓글