https://school.programmers.co.kr/learn/courses/30/lessons/120909
https://school.programmers.co.kr/learn/courses/30/lessons/120909
제곱수 판별하기 문제인데요.
def solution(n):
a=1
while a<1000001:
answer=a**2
a=a+1
if(answer==n):
break
if(answer==n):
result=1
else:
result=2
return result
이렇게 제출해서 맞췄긴 한데 제가 한 방법 말고 다른 방법은 어떤 게 있을까요?
제가 한 건 몇 점 정도?
n이 크지 않으면 어떻게 해도 상관없고.. n이 꽤 크면 math.isqrt(n)**2 == n으로 확인하는게 계산시간이 줄어들겠지 내 코드는 return 2-len([i for i in range(1001) if i*i==n]) 이더라
와
루프를 도네.. ㄷㄷ
def solution(n): i = int( pow ( n, 0.5 )) if ( i * i == n ): return 1 return 2
pow 대신 **0.5써도 됨
감사합니다. pow는 첨보네용
해당 댓글은 삭제되었습니다.
ㄷㄷ.. 수학잼병이라 생각도 못했네요 ㅠㅠ
아 말을 잘못했네 소수아님
int q = sqrt(n); return q * q == n ? 1 : 2; c++인데 이런방식으로 하셈
예전에 빠른 코딩 해야할 때 이런 문제를 본 적이 몇 번 있었는데, 너처럼 코딩해도 되고 파이썬의 장점을 살려서 is_integer, sqrt, math.isqrt, pow (math.pow와 pow는 다름!) 중 아무거나 알면 빠르게 넘어갈 수 있음. 근데 니가 푼 방법도 합리적인 방법이니까 걱정하지 말고..
감사합니당