[프로그래머스] Lv1. 정수 제곱근 판별
문제
임의의 양의 정수 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 인지로 확인하는 방법이 존재했다.
댓글남기기