https://programmers.co.kr/learn/courses/30/lessons/12934
다음 문제는, 입력 되는 n이 어떤 양의 정수 x의 제곱인지 판단하는 문제입니다.
만약 x가 n의 제곱근이라면 x+1의 제곱을, 제곱근이 아니라면 -1을 반환하는 문제입니다.
- 시간 초과를 방지하기 위해 입력되는 임의의 정수 n의 제곱근 + 1까지만 비교
- 만약 i라는 제곱근을 발견한다면, (i+1)의 제곱, 아니라면 -1을 반환
def solution(n):
answer = 0
for i in range(int(n/2)+1):
if i * i == n:
return (i + 1)*(i + 1)
return (-1)
import math
def solution(n):
if n > 3:
for i in range(int(math.sqrt(n))+1):
if i * i == n:
return (i + 1)*(i + 1)
return (-1)
def solution(n):
import math
num = math.sqrt(n)
if math.sqrt(n) == int(math.sqrt(n)) :
return pow(num+1, 2)
return -1
- 나는 아직 내가 푼 2개의 코드들이 왜 틀렸는지 잘 모르겠다... 혹시라도 아는 사람이 있으시다면 알려주시길,,,,😥
아까 두번째 코드를 작성하다 발생한 에러였는데 # math domain error 이다.
찾아보니 math가 처리할 수 없는 값을 만날때 발생한다고 한다.
math 라이브러리를 이용할때라면, 예외처리를 확실히 해두자!!