본문 바로가기
알고리즘/프로그래머스 문제-JS

[JS&Python]정수 제곱근 판별

by sweesweet 2022. 4. 23.

 

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

 

코딩테스트 연습 - 정수 제곱근 판별

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

programmers.co.kr

 

자바스크립트

function solution(n) {
   if(Math.sqrt(n)%1){
       return -1
   }
    else{
        return Math.pow(Math.sqrt(n)+1,2)
    }
}

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.이기 때문에 제곱근이 소수점이 나오면 안되는 것을 이용해서 %1을 계산했을시 나머지가 0이 아닌(truthy)값일 때(소수점일 때) -1를 리턴하도록 했고, 다른 경우(즉, 어떤 양의정수 x의 제곱일 때)는 제곱근+1의 제곱을 리턴하게 했다.

시간을 모르겠당

더보기

 

테스트 1 통과 (0.05ms, 30MB)
테스트 2 통과 (0.03ms, 30MB)
테스트 3 통과 (0.03ms, 30.2MB)
테스트 4 통과 (0.10ms, 30.1MB)
테스트 5 통과 (0.04ms, 30.2MB)
테스트 6 통과 (0.06ms, 30.1MB)
테스트 7 통과 (0.05ms, 30.1MB)
테스트 8 통과 (0.04ms, 30MB)
테스트 9 통과 (0.03ms, 29.9MB)
테스트 10 통과 (0.03ms, 30.1MB)
테스트 11 통과 (0.06ms, 30MB)
테스트 12 통과 (0.06ms, 30.1MB)
테스트 13 통과 (0.05ms, 30MB)
테스트 14 통과 (0.04ms, 30MB)
테스트 15 통과 (0.04ms, 30MB)
테스트 16 통과 (0.05ms, 30.2MB)
테스트 17 통과 (0.04ms, 30MB)
테스트 18 통과 (0.04ms, 30.1MB)

파이썬

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

비슷한 방법이다..ㅎ.. 파이썬은 확 떠오르는게 없어서.. 소숫점있는 값을 int로 변환됐을 때를 이용해 원래의 값과 비교시켰다

더보기
테스트 1 통과 (0.01ms, 10.2MB)
테스트 2 통과 (0.02ms, 10.1MB)
테스트 3 통과 (0.01ms, 10.3MB)
테스트 4 통과 (0.02ms, 10.3MB)
테스트 5 통과 (0.01ms, 10.3MB)
테스트 6 통과 (0.01ms, 10.3MB)
테스트 7 통과 (0.01ms, 10.1MB)
테스트 8 통과 (0.02ms, 10MB)
테스트 9 통과 (0.02ms, 10.2MB)
테스트 10 통과 (0.01ms, 10.1MB)
테스트 11 통과 (0.02ms, 10.3MB)
테스트 12 통과 (0.02ms, 9.95MB)
테스트 13 통과 (0.01ms, 10.1MB)
테스트 14 통과 (0.02ms, 10.4MB)
테스트 15 통과 (0.02ms, 10.2MB)
테스트 16 통과 (0.01ms, 10.2MB)
테스트 17 통과 (0.02ms, 10.3MB)
테스트 18 통과 (0.02ms, 10.2MB)