ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] leetcode 367 Valid Perfect Square
    코딩테스트/LeetCode 2025. 2. 3. 20:21

    https://leetcode.com/problems/valid-perfect-square/description/

    요구사항

    • sqrt() method를 사용하지 말 것
    • 거듭제곱의 제곱근인지 자연수인지 판별하라. 

    설계

    • 4의 약수 124
    • 9의 약수 139
    • 16의 약수 1 2 4 8 16

    이처럼 감히 추측하건데 자연수의 거듭제곱의 약수는 무조건 홀수이고 그외는 짝수이다. 따라서 약수의 개수가 홀수이면 True를 반환

    구현 (leetcode 버전은 한 번 더 내려주세요.)

    import sys
    input = lambda: sys.stdin.readline().rstrip()
    
    def is_square(num):
        print(num)
        num_list = []
        for i in range(1, num+1):
            if num % i == 0:
                num_list.append(i)
    
        # print(num_list)
    
        if len(num_list) % 2 != 0:
            return True
    
        return False
    
    num = int(input())
    
    if is_square(num):
        print('true')
    else:
        print('false')

    leetcode verrsion

    class Solution:
        def isPerfectSquare(self, num: int) -> bool:
            # num의 제곱근을 계산하고 정수 부분을 취한 후, 그 제곱이 num과 같은지 확인
            num_list = []
            for i in range(1, num+1):
                if num % i == 0:
                    num_list.append(i)
            
            return len(num_list) % 2 != 0

     

    다른 방법

    sqrt_num = int(num ** 0.5)
    return sqrt_num * sqrt_num == num

     

Designed by Tistory.