본문 바로가기
algorithm

[프로그래머스]정수 제곱근 판별 - java, python

by skysline 2023. 3. 3.
반응형

정수 제곱근 판별

문제 설명

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

n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

입출력 예

입출력 예#1
 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.

입출력 예#2
 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.


java code

class Solution {
    public long solution(long n) {
        long num = (long)Math.sqrt(n);
        if(num*num == n){
            n += (num*2)+1;
        }else
            n =-1;
        return n;
    }
}

위 코드는 입력으로 정수형 변수 n을 받아서,

n이 어떤 자연수 x의 제곱인 경우 x+1의 제곱을 반환하고,

그렇지 않은 경우 -1을 반환하는 함수(solution)입니다.

함수 내부에서는 입력값 n의 제곱근을 구한 후 num 변수에 저장합니다.

그 다음, num*num이 n과 같은 경우에는 n에 (num2)+1 값을 더해 x+1의 제곱을 계산하게 되고,

그렇지 않은 경우에는 n에 -1을 대입하여 -1을 반환하도록 처리합니다.

즉, 이 함수는 입력값 n이 어떤 자연수의 제곱인지 아닌지를 판별하고,

그에 따라 결과값을 반환합니다.

python code

import math

def solution(n):
    if math.sqrt(n) == int(n**0.5):
        return (math.sqrt(n)+1)**2
    else :
        return -1

 

반응형

댓글