[프로그래머스] Lv1. 정수 제곱근 판별

최대 1 분 소요

문제

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한 조건

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

나의 풀이:

def solution(n):
    root = n**(1/2)
    if int(root) == root:
        return (root+1)**2
    else:
        return -1

제곱근을 구하려면 n^(1/2) 을 구하면 된다. 이 때 제곱근이 정수인지 실수인지 판별 하기 위해 제곱근을 int로 변환해준 값이 그대로인지를 체크하고 조건이 맞을 경우 x+1의 제곱을 리턴, 아닌 경우 -1을 리턴하도록 했다.

def solution(n):
    root = n**(1/2)
    return (root+1)**2 if int(root) == root else -1

처음의 코드를 한줄로 정리한 결과이다.

다른 사람들의 풀이:

def solution(n):
    sqrt = n ** (1/2)

    if sqrt % 1 == 0:
        return (sqrt + 1) ** 2
    return -1

전체적인 풀이과정은 나의 풀이와 유사하지만, 정수 판별을 1로 나누었을 때 나머지가 0 인지로 확인하는 방법이 존재했다.

댓글남기기