반응형
문제
Write an algorithm to determine if a number n is happy.
A happy number is a number defined by the following process:
- Starting with any positive integer, replace the number by the sum of the squares of its digits.
- Repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1.
- Those numbers for which this process ends in 1 are happy.
Return true if n is a happy number, and false if not.
문제[번역]
숫자 n이 happy number인지 결정하는 알고리즘을 작성합니다.
happy number는 다음과 같은 과정을 통해 정의되는 수 입니다
임의의 양의 정수로 시작하여 숫자를 숫자의 제곱합으로 바꿉니다.
숫자가 1이 될 때까지 이 과정을 반복하거나, 1을 포함하지 않는 주기로 끝없이 반복한다.
이 과정이 1로 끝나는 숫자들은 행복하다.
n이 happy number이면 true를 반환하고 그렇지 않으면 false를 반환합니다.
happy number는 다음과 같은 과정을 통해 정의되는 수 입니다
임의의 양의 정수로 시작하여 숫자를 숫자의 제곱합으로 바꿉니다.
숫자가 1이 될 때까지 이 과정을 반복하거나, 1을 포함하지 않는 주기로 끝없이 반복한다.
이 과정이 1로 끝나는 숫자들은 행복하다.
n이 happy number이면 true를 반환하고 그렇지 않으면 false를 반환합니다.
Example 1
1
true
Example 2
1000000000
true
Example 3
24
false
제약조건
1 <= n <= 231 - 1
접근방법
set 자료구조를 통해 이미 확인한 숫자인지 확인해야 합니다.
수를 입력받을 때 마다 숫자를 잘라서 제곱하여 합한 뒤, 반복문을 돕니다.
반복문을 도는 도중에, n이 1이되면 true 이미 set자료구조에 있는 값을 넣으면 false 입니다.
코드
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
const set = new Set();
while(n !== 1){
if(set.has(n)) return false;
set.add(n);
n = String(n);
let sum = 0;
for(let i=0; i<n.length; i++){
sum += Number(n[i])*Number(n[i]);
}
n = sum;
}
return true;
};
주의사항
x
반응형
'공부 정리 > LeetCode' 카테고리의 다른 글
[LeetCode] Min Cost Climbing Stairs 자바 (0) | 2022.06.27 |
---|---|
[LeetCode] Minimum Knight Moves 자바 (0) | 2022.06.23 |
[LeetCode] Climbing Stairs (java) (0) | 2022.05.25 |
[LeetCode] Sqrt(x) (java) (0) | 2022.05.25 |
[LeetCode] Add Binary (java) (0) | 2022.05.24 |
댓글