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

파이썬의 행복한 숫자

<시간/>

여기서 우리는 숫자 n이 하나의 행복한 숫자인지 아닌지를 감지하는 방법을 볼 것입니다. 따라서 행복한 숫자는 숫자입니다. 여기서 양의 정수로 시작하면 숫자가 해당 숫자의 제곱의 합으로 바뀝니다. 이 프로세스는 1이 될 때까지 반복됩니다. 그렇지 않으면 순환에서 끝없이 반복됩니다. 그 숫자들은 1이 찾았을 때 행복한 숫자가 될 것입니다.

숫자가 19라고 가정하면 숫자가 행복한 숫자이므로 출력이 참이 됩니다. 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):
      """
      :type n: int
      :rtype: bool
      """
      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)
ob1 = Solution()
op = ob1.isHappy(19)
print("Is Happy:",op)

입력

19

출력

Is Happy: True