반응형
문제
[LeetCode][Javascript] 202번 - Happy Number
문제 설명
- 숫자로 입력한 입력값
n
을 문자열로 변환해 1글자씩 끊어 배열에 저장한다. - 배열에서
reduce
를 활용해 제곱합을 구해calculate
변수에 저장한다. - dp라는 배열에 이미 calculate 값이 이미 있다면 무한 반복하게 될테니 그것을 방지하기 위해 이미 있는 값이면 멈추고 false를 만환한다.
- dp에 없는 수이면 dp 배열에 추가한다.
- 반환값에 함수를 넣어 주면서 재귀적으로 실행될 수 있도록 한다.
성공 코드
const isHappy = (n, dp = []) => {
if (n === 1) return true;
let nArray = String(n).split('');
let calculate = nArray.reduce((sum, element) => sum += Math.pow((element), 2), 0);
if (dp.includes(calculate)) return false;
dp.push(calculate)
return isHappy(calculate, dp);
};
반응형