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