프로그래머스/Level 1

정수 제곱근 판별

유니디니 2020. 11. 12. 23:28
728x90
반응형

문제 설명

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

제한 사항

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

 

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

 

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

 

나의 코드

def solution(n):

    import math
    a = int(math.sqrt(n))
    
    for i in range(1, a+1):
        if (n == i**2):
            return (i+1)**2
    return -1

math.sqrt는 제곱근을 의미한다. 제곱근을 표현하는 방법은 변수**(1/2)도 있다. 방법은 간단하다. 제곱근을 구해서 제곱근 범위안의 수를 for문으로 비교하면 된다.

 

다른사람의 풀이

def solution(n):
	sqrt = n ** 1/2
    
    if sqrt %1 ==0:
    	return (sqrt +1) **2
    return -1

제곱근을 **(1/2)로 표현하였고, import math를 하지 않은 것이 특징이다. sqrt는 1로 나눠서 나머지가 0이 아니면 양의 정수가 아니니까 if문을 통해 걸러진다.

반응형

'프로그래머스 > Level 1' 카테고리의 다른 글

키패드 누르기  (0) 2020.11.15
가운데 글자 가져오기  (0) 2020.11.15
정수 내림차순으로 배치하기  (0) 2020.11.15
완주하지 못한 선수  (0) 2020.11.14
두 개 뽑아서 더하기  (0) 2020.11.12