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
반응형