코딩테스트 - 정수 제곱근 판별, C언어

728x90
반응형

입력된 정수 n이 어떤 양의 정수 x의 제곱인지 아닌지 판별하는 문제,

 

문제풀이 중 알아낸것

1. n에 0.5를 제곱하면 x가 나온다.

2. 소수점의 판별은 소수점 n에서 강제 형변환한 값을 빼서 나머지가 0이 아니면 소수다.

3. sqrt 함수 

 

내가 작성한 코드 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <math.h>

long long solution(long long n) {
    long long answer = 0;
    double exponentiation;
    
    exponentiation = pow(n, 0.5); // sqrt(n); 대체 가능
    exponentiation = pow((exponentiation+1), 2);
    if((exponentiation - (long long)exponentiation) == 0) {
        answer = exponentiation;    
    }
    else {
        answer = -1;
    }
    
    return answer;
}

 

가장 심플한 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <math.h>

long long solution(long long n) {
    long long answer = 0;
   
   if ((int)sqrt(n) == sqrt(n))
        answer = pow((sqrt(n) + 1), 2);
    else
        answer = -1;
    
    return answer;
}

 

 

- 끝 - 

728x90
반응형