Python/Coding Test

[Coding Test] 정수 제곱근 판별

gangee 2023. 5. 6. 17:47

목차

    728x90
    반응형

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

    문제 설명

    임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
    n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

    입출력 예
    n = 121, return = 144
    n = 3, return = -1

    문제 풀이

    • math 라이브러리에 있는 sqrt()함수를 이용해 x를 정의해줌
    • 양의 정수 제곱근을 가지므로 int(x)를 통해 x가 정수가 아닐 때, -1을 반환
    • x가 정수일 경우, math 라이브러리의 pow()를 통해 x+1의 제곱을 반환

    정답 코드

    import math
    
    def solution(n):
        x = math.sqrt(n)
    
        if x != int(x):
            return -1
        else:
            return math.pow(x+1, 2)
    • 다른 사람 풀이
    def nextSqure(n):
        sqrt = n ** (1/2)
    
        if sqrt % 1 == 0:
            return (sqrt + 1) ** 2
        return 'no'
    • math 라이브러리를 사용하지 않고 거듭제곱 연산자(**)을 이용해 문제를 풀었음
    • n의 제곱근을 1로 나누었을 때 나머지가 0이면 정수라는 것을 이용함

    틀린 코드

    def solution(n):
        x = int()
        x > 0
    
        if n == x*x:
            return (x+1)**2
        else:
            return -1
    • 실행하면 모든 값이 -1로 나옴
    • 정확한 이유는 못 찾았는데 x 정의가 잘못된거 같음
    * 이 문제는 프로그래머스 코딩테스트 연습 1단계 문제입니다.
    728x90
    반응형