Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 숫자에 1을 더한 값이 완전제곱수인지 확인하는 방법

어떤 수 n이 주어졌을 때, 이 수에 1을 더하면 완전제곱수가 되는지 확인하는 문제입니다.

예를 들어 입력값이 n = 288이라면, 여기에 1을 더한 값은 289이고, 289는 17의 제곱(17²)과 같으므로 결과는 True가 됩니다.

문제 해결 접근 방법

이 문제는 다음 단계를 통해 간단하게 해결할 수 있습니다.

  • res_num := n + 1 (n에 1을 더한 값을 저장)
  • sqrt_val := res_num의 제곱근에서 정수 부분만 추출
  • sqrt_val * sqrt_val이 res_num과 같다면
    • True 반환
  • 그렇지 않으면 False 반환

즉, 1을 더한 값의 제곱근을 구하고, 그 정수를 다시 제곱했을 때 원래 값과 일치하는지만 확인하면 됩니다. 아래 예제 코드를 통해 더 자세히 살펴보겠습니다.

예제 코드

from math import sqrt

def solve(n):
    res_num = n + 1

    sqrt_val = int(sqrt(res_num))

    if sqrt_val * sqrt_val == res_num:
        return True
    return False

n = 288
print(solve(n))

입력

288

출력

True

코드 설명

위 코드는 파이썬의 math.sqrt() 함수를 사용하여 제곱근을 계산합니다. n에 1을 더한 값의 제곱근을 구한 뒤 정수로 변환하고, 그 정수를 다시 제곱하여 원래 값과 비교합니다. 두 값이 같다면 해당 수는 완전제곱수이므로 True를 반환하고, 그렇지 않으면 False를 반환합니다. 이 방법은 시간 복잡도가 O(1)로 매우 효율적이며, 큰 수에 대해서도 빠르게 동작합니다.