HappyNumber
Published at 2022-01-05
class Solution:
def isHappy(self, n: int) -> bool:
def getNextNum(n):
sum = 0
while n:
sum += (n % 10) * (n % 10) # 일의자리부터 일단 제곱 계산
n //= 10 # 십의자리를 일의자리로 밀어서 또 계산ㄱ
return sum
slow, fast = n, getNextNum(n)
while slow != fast:
slow = getNextNum(slow)
fast = getNextNum(getNextNum(fast))
return slow == 1
# https://leetcode.com/problems/linked-list-cycle/
# 141. Linked List Cycle
# 이 문제랑 비슷
# two pointer 이용 /**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
const getNextNum = (n) => {
let sum = 0
while(n){
sum += Math.pow(n%10,2)
n = Math.floor(n/10)
}
return sum
}
let nextNum = getNextNum(n)
while(n !== nextNum){
n = getNextNum(n)
nextNum = getNextNum(getNextNum(nextNum))
}
return n === 1
};