프로그래머스 정수 제곱근 판별

최준근·2021년 9월 29일
0

문제 설명

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.

입출력 예
n return
121 144
3 -1
입출력 예 설명
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.

입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

생각하기

  1. 정수 n이 정수 x의 제곱인지 아닌지 판단하기
  2. 만약 제곱이라면 x+1 ** 2 를 리턴 아니라면 -1 리턴

내 코드

def solution(n):
    ans = 0 
    sqr = n **0.5
    if sqr == int(sqr):
        ans = (sqr+1) **2
    else: 
        ans =-1
    return ans

첫번째 시도는 for문을 사용해 range(1,n+1) 까지 돌며 n//i가 ==i면 정답을 리턴하는걸로 했다 하지만 시간 초과로 문제를 틀렸다 .

두번째 시도에 도저히 모르겠어서 구글링을 했더니 간단한 문제였다.

n ** 0.5 이게 제곱근을 구하는 방법이라는걸 몰랐기 때문에 어려웠다.

sqr = n ** 0.5의 수식으로 sqr에 제곱근을 만들고 if 문으로 sqr이 정수인지 아닌지판단을 한다. 정수라면 정답을 리턴 아니라면 -1을 리턴하는 함수를 짜면 간단히 문제가 해결된다.

n ** 0.5

어떤 정수 ex) n = 121 이라면 n의 정수 x의 제곱인지 판단하는 수식.
N = n(121) ** 0.5
N은 11이 나온다.

profile
느려도 좋으니 꾸준하게

0개의 댓글