파이썬 코드카타

정수 제곱근 판별 # import math, n**(1/2), %1==0

여연찌 2024. 3. 28. 20:31
  • 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
    n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
def solution(n):
    x = n**(1/2)
    if x % 1 == 0:
        return (x+1) ** 2
    else:
        return -1

 

 

① n**(1/2)

# n의 1/2 제곱은 n의 제곱근이다.

 

ex.

121의 1/2 승

>> √121 = 11

 

② x % 1 == 0

# x를 1로 나눈 나머지가 0이면 양의정수이다.

# ex.

x = 11 이었을 때 1로 나누면 몫이 11, 나머지가 0

 

# 다른 풀이

import math
def solution(n):
    x = math.sqrt(n)
    if x != int(x):
        return -1
    return (x+1)** 2    # math.pow(x+1,2)

 

 

① import math

# math 내장 라이브러리 가져오기

 

② x = math.sqrt(n)

# x에 n의 제곱근을 저장

 

③ if x != int(x)

# x 값이 x의 정수값과 다르다는 조건

 

④ math.pow(x+1,2)

# x+1 의 제곱(2승)

 

 

 

* 내장 라이브러리

: 파이썬을 설치할 때 같이 설치되는 라이브러리

: 필요한 코드를 재사용하기 위해 호출할 수 있도록 클래스나 함수를 모아놓은 것

: import 로 꺼내 쓰면 됨

 

math.sqrt(제곱근을 구하려는 수)

ex.

math.sqrt(4)

>>  2.0

 

math.pow(밑,지수)

ex.

math.pow(2,3)

>> 2*2*2 = 8

 

 

 


 

 

 

 

 

n**(1/2) 이 왜 n의 제곱근인지

%1==0 이 정수인지를 깨닫지 못하고 있다가

숫자를 넣어서 곱해보고.. 구글링을 해보고...제곱근을 다시 공부하고...

그리고 % 사용법을 다시 보고 와서 깨달았다... 

나머지가 나오는 거였음을 !!

역시 문제를 풀면서 알게되는게 더 잘 남는 것 같다.

 

긴 시간이 걸렸지만 그래도 해결!

 

 

def solution(n):
    for i in range(1,n+1):
        if n==i*i:
            return (i+1)*(i+1)
    return -1

 

ㅋ..

 

어거지로 맞춘 답

그냥 3이면 -1 을 나오게 한거라 이렇게 풀면 안됨!