안녕하세요~ 뭉실언니입니다. 날씨가 많이 추워졌네요 ㅜㅜ

다들 감기 조심하세요 ♨

 

오늘의 문제는 정수의 제곱근을 판별하는 문제입니다.

어떤 수 x를 제곱하여 정수 n이 되었을 때, x를 n의 제곱근이라고 합니다.

정수 n이 양의 정수 x의 제곱이라면 x+1의 제곱을 반환하고, n이 x의 제곱이 아니라면 -1을 반환하라.

먼저 미지수 x가 n의 제곱근일 경우 x는 정수 n의 반보다는 작으니 범위를 n/2 까지로 정해두고 시작했습니다.

for x in range(n//2)

 

여기서 x의 제곱 == n일 경우 x+1의 제곱을 반환하라고 했으니 아래와 같이 쓸수 있습니다!

if x**2 == n: return (x+1)**2

def solution(n):
    for x in range(n//2):
        if x**2 == n:
            return (x+1)**2
    return -1

저는 이런 방식으로 풀어봤는데요, 제 친구는 다른방법으로 풀었다고 하네요

 


잘난척 재수없긴한데 여러분한테만 일단 알려드릴게요!

def solution(n):
    x = n**(1/2)
    return (x+1)**2 if x ** 2 == n else -1

제 친구는 for문을 쓰지 않고 위와 같이 풀었다고 해요.

 

n의 1/2 제곱을 했다가 다시 제곱을 했을 때, 처음 n과 똑같은 수가 나온다면 제곱근인지 아닌지 판별할 수 있습니다.

만약 제곱근이 아니라면 n의 1/2 제곱이 실수가 되기 때문에 처음 n과 같아질수 없기 때문이죠~다들 읽어주셔서 감사합니다.

 

ps. 도움주신 쭈꾸미형 감사합니다.

 

'파이썬 문제 풀기!' 카테고리의 다른 글

하샤드 수 검사하기  (1) 2023.10.31
정수를 내림차순으로 배치하기  (0) 2023.10.31
약수의 합 구하기  (1) 2023.10.26
짝수와 홀수 구하기  (0) 2023.10.26
배열의 평균값 구하기  (3) 2023.10.23

+ Recent posts