bdfgdfg

[레벨1] 정수 제곱근 판별 본문

코딩테스트/프로그래머스

[레벨1] 정수 제곱근 판별

marmelo12 2021. 8. 28. 13:09
반응형
#include <string>
#include <cmath>
#include <vector>

using namespace std;

long long solution(long long n) {
    long long answer = 0;
    float sqrtNum = sqrt(n);
    int temp = static_cast<int>(sqrtNum);
    if(sqrtNum - temp == 0)
        answer = sqrtNum +1;
    else
        return -1;

    return answer * answer;
}

나의 풀이는 인자를 넘기면 루트를 씌운 값을 반환해주는 sqrt함수를 이용하고. 만약 n이 어떤 양의 정수의 제곱이라면 소수점이 존재하지 않는 정수값이 나올것이고 그게아니라면 소수점값이 나올테니 int형으로 변환하여 빼준뒤 풀었다.

 

다른 사람의 풀이를 보니 

int a=static_cast<int>(sqrt(n));
answer=(pow(a,2)==n)?pow(a+1,2):-1;

위와같이 루트 n값을 구하고 그 값에 2승(제곱)을 했을 때 n이 나오는지 확인하였다. 

반응형
Comments