Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

세상의 모든 알고리즘

[프로그래머스 Python] 정수 제곱근 판별 본문

python

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

952hi 2021. 11. 10. 20:28

https://programmers.co.kr/learn/courses/30/lessons/12934

 

코딩테스트 연습 - 정수 제곱근 판별

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

programmers.co.kr


math의 sqrt라는 제곱근을 구하는 함수를 사용했습니다.

이 문제의 핵심은 제곱근을 구했을때 정확히 딱 떨어졌는지를 확인하는 것을 조건문으로 사용하는 것입니다.

 

초기에는 type함수를 사용해 정수값이면 출력해주려 했으나 sqrt함수를 사용하면 float 형식으로 바뀌어 불가능 합니다.

두번째 시도에는 아래처럼 int를 사용해 소수점을 다잘라주고 제곱을 한값이 n과 같으면 정확히 제곱근이 떨어진다고 볼수 있다고 생각해 이렇게 풀게 되었습니다.

 

'''
https://programmers.co.kr/learn/courses/30/lessons/12934
정수제곱근

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

제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.


느낀점
math의 sqrt라는 제곱근을 구하는 함수를 알고있어 쉽게 풀수 있었다.
'''

import math
def solution(n):
    if int(math.sqrt(n)) ** 2 == n :
        answer = int((math.sqrt(n)+1)) ** 2
    else:
        answer = -1
    return answer