[Programmers] - 정수 제곱근 판별~~~~18번 테스트 실패

오동훈·2021년 3월 17일
0

Programmers

목록 보기
16/64
post-thumbnail

1. Problem 📃

https://programmers.co.kr/learn/courses/30/lessons/12934

다음 문제는, 입력 되는 n이 어떤 양의 정수 x의 제곱인지 판단하는 문제입니다.
만약 x가 n의 제곱근이라면 x+1의 제곱을, 제곱근이 아니라면 -1을 반환하는 문제입니다.

2. Logic 👨‍🏫

  1. 시간 초과를 방지하기 위해 입력되는 임의의 정수 n의 제곱근 + 1까지만 비교
  2. 만약 i라는 제곱근을 발견한다면, (i+1)의 제곱, 아니라면 -1을 반환

3. Code 💻

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)

2. 내가 풀었지만 똑같은 테스트에서 실패나온 코드..

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)

3. 결국 남의 코드..

def solution(n):
    import math
    num = math.sqrt(n)

    if math.sqrt(n) == int(math.sqrt(n)) :
        return pow(num+1, 2)

    return -1    

4. Feedback 📚

- 나는 아직 내가 푼 2개의 코드들이 왜 틀렸는지 잘 모르겠다... 혹시라도 아는 사람이 있으시다면 알려주시길,,,,😥

4.1 math error

아까 두번째 코드를 작성하다 발생한 에러였는데 # math domain error 이다.
찾아보니 math가 처리할 수 없는 값을 만날때 발생한다고 한다.
math 라이브러리를 이용할때라면, 예외처리를 확실히 해두자!!

profile
삽질의 기록들🐥

0개의 댓글