https://programmers.co.kr/learn/courses/30/lessons/12934
임의의 수 n이 들어왔을 때, n이 어떤 양의 정수의 제곱인지 아닌지 판단하는 문제이다.
제곱근이 정수로 떨어지는 경우 그 제곱근의 +1한 값의 제곱수를 반환해야 하고 아닐 경우 -1을 반환해야 한다.
처음에는 제곱근의 값이 정수인지 아닌지 판단하는 조건식을 만들려고 하였으나 제곱근을 구하는 함수가 float 형식으로 반환하기 때문에 실패했다 🥺
그래서 정수로 떨어지는 경우에는 소수점 자리 마지막 수가 0인 것을 활용하여 조건문을 작성하였다.
from math import sqrt
def solution(n):
x = sqrt(n)
if str(x)[-1] == '0':
return (x+1)**2
else:
return -1
성공적으로 통과했다 !!
나는 문자열로 변환하여 비교하는 방식으로 접근하였지만 이것을 숫자를 활용하여 풀고싶었다 !!
다른 사람들의 풀이를 참고해보고 새롭게 알게된 사실이 있다. 파이썬에서 **(1/2)
가 제곱근을 나타낸다는 것이다!
게다가 소수를 1로 나누면 나머지가 0으로 나오지 않는 것도 깨달았다...(이건 초등학교에서 배우는건가...?)
이러한 점을 알고 작성한 코드는 다음과 같다!
def solution(n):
sqrt = n**(1/2)
if sqrt % 1 == 0:
return (sqrt+1)**2
else: return -1
훨씬 간결하고 좋은것 같다....!!! 😧