[1스4코2파] # 186. LeetCode 202. Happy Number

gunny·2023년 7월 8일
0

코딩테스트

목록 보기
186/530
post-thumbnail

[1스4코2파] 1명의 스위프트 개발자와 4명의 코틀린 개발자, 2명의 파이썬 개발자코딩 테스트 서막 : 1스4코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능

START :

[3코1파] 2023.01.04~ (186차)
[4코1파] 2023.01.13~ (178일차)
[1스4코1파] 2023.04.12~ (89일차)
[1스4코2파] 2023.05.03 ~ (67일차)

Today :

2023.07.07 [186일차]
LeetCode Patterns
202. Happy Number
https://leetcode.com/problems/happy-number/description/

202. Happy Number

https://leetcode.com/problems/happy-number/description/

문제 설명

주어진 number를 일의 자리에서 제곱한 것을 더하고 더하고 더하고 더하고 계속해서 1이 나오는지 나오면 해피해피해피해피 넘버
아니면 이이잉 넘버 (언해피넘버)
이이잉 넘버는 계속 더하면 끝없이 계속 순환되는 패턴임

문제 풀이 방법

주어진 숫자가 10 이상의 숫자이면 divide 해서 제곱한 후 나눠야 하므로 주어진 숫자를 n으로 나눠서 나머지와 몫으로 square 하고 더하는 함수를 만들어주고, 해당 숫자가 1이 나오면 true 아니면 false를 retrun 함.
순환하는 경우도 있으므로 더해진 숫자들을 저장하는 set 자료구조 할당 해줘야 함

내 코드

class Solution:
    def isHappy(self, n: int) -> bool:
        nSet = set()

        while n not in nSet:
            nSet.add(n)
            n = self.sumOfSquares(n)
            if n ==1 :
                return True       
        return False

    
    def sumOfSquares(self, n:int) -> int:
        output = 0

        while n:
            digit = n%10
            digit = digit **2
            output += digit
            n = n //10
        return output
          

증빙

여담

처음 문제 받고

code 영상 보고 풀기

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글