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
반응형
'Programming language > 코딩테스트' 카테고리의 다른 글
코딩테스트 - 번호가리기, C언어 (0) | 2022.09.29 |
---|---|
코딩테스트 - 두 정수 사이의 합, C언어 (0) | 2022.09.29 |
코딩테스트 - 콜라츠 추측, Collatz, C언어 (0) | 2022.09.29 |
코딩테스트-문자열을 정수로 바꾸기, C언어, itoa() (0) | 2022.09.29 |
코딩테스트 - 하샤드 수, C언어 (1) | 2022.09.29 |