< 문제 간단설명 >
양의 정수 n이 입력값으로 들어온다. n의 각 자리를 나누어서 각각 제곱을 한 뒤 더해준 것이 다음 수가 된다. 이 과정을 1이 될 때 까지 반복한다. 1이 된다면 true를 반환하고 무한루프에 빠진다면 false를 반환한다.
예를 들어 19일 경우, 1^2 + 9^2 = 82가 되고, 다시 8^2 + 2^2 = 68, 6^2 + 8^2 = 100, 1^2 + 0^2 + 0^2 = 1이 된다. 따라서 true를 반환한다.
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
let numSet = new Set();
let num = n;
let sum = 0;
while(true) {
sum = 0;
if(num === 1) return true;
num.toString().split('').map(Number).forEach((el) => {
sum += el ** 2;
});
num = sum;
// 이미 set에 저장되어 있는수라면 무한루프이므로 false 반환
if(numSet.has(sum)) {
return false;
}
numSet.add(sum);
}
};
'PS > LeetCode' 카테고리의 다른 글
LeetCode / String / 14번 / Longest Common Prefix / JS (0) | 2023.04.19 |
---|---|
LeetCode / Simulation / 54번 / Spiral Matrix / JS (0) | 2023.04.18 |
LeetCode / Heap / 692번 / Top K Frequent Words / JS (0) | 2023.04.18 |
LeetCode / Heap / 1046번 / Last Stone Weight / JS (0) | 2023.04.18 |