본문 바로가기

파이썬 프로그래밍/파이썬 심화

[Python] 파이썬 예제. 정수 제곱근 판별하기 풀이

본 게시글은 http://tryhelloworld.co.kr/ 에서 문제를 참고하여 풀이한 게시글입니다.


level 1 의 난이도 쉬움 문제입니다.

문제

nextSqaure함수는 정수 n을 매개변수로 입력받습니다.
n이 임의의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 임의의 정수 x의 제곱이 아니라면 'no'을 리턴하는 함수를 완성하세요.
예를들어 n이 121이라면 이는 정수 11의 제곱이므로 (11+1)의 제곱인 144를 리턴하고, 3이라면 'no'을 리턴하면 됩니다.



1
2
3
4
5
6
def nextSqure(n):
    # 함수를 완성하세요
    return ''
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(nextSqure(121)));
cs




풀이

1
2
3
4
5
6
import math
def nextSqure(n):
    return pow(math.sqrt(n)+12if int(math.sqrt(n)) == math.sqrt(n) else 'no'
 
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(nextSqure(121)));
cs

3번째줄을 풀이하겠습니다.


pow(math.sqrt(n)+1, 2)

pow는 파이썬의 제곱함수입니다 Ex)pow(2,3)은 2의 3승이다

sqrt는 루트를 뜻합니다.


즉 121이라는 숫자가 들어왔을때, math.sqrt(n)는 11이 되고,

 math.sqrt(n)+1 을 통해 12가 되겠죠?

그리고 제곱을 해서 144가 되는것입니다.

pow(math.sqrt(n)+12)

11 12 144


 if int(math.sqrt(n)) == math.sqrt(n)

만약에. math.sqrt(n)) == math.sqrt(n)이 참이면.

sqrt는 루트입니다. 지금 121이 들어와있죠?

그럼 11의 값들이 들어와있습니다. 즉 제곱근일때를 비교하기 위하여


11 == 11이 참이면 값을 출력하고

그것이 아닐때 'no'를 출력하게 되는것입니다.