안녕하세요~ 뭉실언니입니다. 날씨가 많이 추워졌네요 ㅜㅜ
다들 감기 조심하세요 ♨
오늘의 문제는 정수의 제곱근을 판별하는 문제입니다.
어떤 수 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 |