
프로그래머스 LV1 정수 제곱근 판별(연습문제)
2021, Apr 07
프로그래머스 lv1 정수 제곱근 판별(연습문제)
문제 설명
임의의 양의 정수 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을 리턴합니다.
접근
n
에 루트를 씌우고 그것이 정수인지 확인 후 정수라면 +1 후 제곱, 아니라면 -1
함수 정리
pow(n, x)
함수는 n을 x 만큼 제곱하는 함수
sqrt = n ** (1/2)
이렇게 표현할 수 도 있다.
풀이
from math import sqrt
def solution(n): return (sqrt(n)+1)**2 if int(sqrt(n)) == sqrt(n) else -1
solution(121)
#다른 사람 코드
def solution(n):
sqrt = n ** (1/2)
if sqrt % 1 == 0:
return (sqrt + 1) ** 2
return -1
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges