Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 행복한 숫자

<시간/>

숫자 n이 있다고 가정합니다. 하나의 Happy number인지 확인하겠습니다. 알다시피 행복한 숫자는 숫자입니다. 여기서 양의 정수로 시작하면 숫자가 해당 숫자의 제곱의 합으로 바뀝니다. 이 프로세스는 1이 될 때까지 반복됩니다. 그렇지 않으면 순환에서 끝없이 반복됩니다. 그 숫자들은 1이 찾았을 때 행복한 숫자가 될 것입니다.

따라서 입력은 19와 같으며 숫자가 행복한 숫자이므로 출력은 true가 됩니다. 19에서 볼 수 있듯이

1 2 + 9 2 =82

8 2 + 2 2 =68

6 2 + 8 2 =100

1 2 + 0 2 + 0 2 =1

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 여기에서는 동적 프로그래밍 접근 방식을 사용하고 재귀를 사용하여 이 문제를 해결합니다.
  • 기본 사례는 n =1일 때 true를 반환하는 것입니다.
  • n이 이미 방문한 경우 false를 반환합니다.
  • n을 방문한 것으로 표시
  • n :=n을 문자열로, l :=n의 모든 숫자 목록
  • temp :=모든 숫자의 제곱합
  • 매개변수 temp 및 방문 목록을 사용하여 재귀적으로 함수를 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution(object):
   def isHappy(self, n):
      return self.solve(n,{})
   def solve(self,n,visited):
      if n == 1:
         return True
      if n in visited:
         return False
         visited[n]= 1
         n = str(n)
         l = list(n)
         l = list(map(int,l))
         temp = 0
         for i in l:
            temp += (i**2)
         return self.solve(temp,visited)
ob = Solution()
print(ob.isHappy(19))

입력

19

출력

True