-
[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