OLD/Coding Test
[프로그래머스] level 1 : 정수 제곱근 판별
stranger95
2020. 2. 7. 11:10
문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예
n | return |
121 | 144 |
3 | -1 |
Solution
1
2
3
4
|
def solution(n) :
sqrt = n ** (1/2)
if sqrt % 1 == 0 : return (sqrt + 1) ** 2
return -1
|
cs |
코드해석
입력 받은 정수를 1/2 제곱하여 제곱근을 구합니다. 만약 구한 제곱근 sqrt가 정수라면(=입력 받은 정수 n이 어떤 양의 정수의 제곱이라면) 1으로 나누었을 때 나머지가 0일 것이며, 이때 sqrt에 1을 더한 값의 제곱을 반환합니다. sqrt가 정수가 아닌 실수라면 1으로 나누었을 때 0이 아닌 실수일 것이며, 이때 -1을 반환합니다.
다른 사람의 풀이
1
2
|
def solution(n) :
return n == int(n**.5)**2 and int(n**.5+1)**2 or -1
|
cs |
제곱근을 구한 후 제곱했을 때 자기 자신이면 and 이후의 결과를 반환하고, 그렇지 않다면 or 이후를 반환합니다.