문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고,
n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
문제 유형
- 수학적 판별
- 제곱근 연산을 사용하여 숫자가 완전제곱수인지 확인
의사코드
- 결과값(result)을 선언한다.
- 입력값 n의 제곱근을 변수(sqrtN)에 저장한다.
- sqrtN의 소수값을 제거하기 위해 integer로 변환하여 변수(integerSqrtN)에 저장한다.
- sqrtN과 integersSqrtN을 마이너스 연산하여 0인지 확인한다.
- sqrtN에 소수값이 없다면 마이너스 연산시 0
- sqrtN에 소수값이 있다면 마이너스 연산시 0.xxx
- 만약 0이라면 x+1의 제곱을 result에 저장한다.
- 결과값(result)을 반환한다.
코드 작성
long long solution(long long n) {
long long result = -1;
float sqrtN = sqrt(n);
int integerSqrtN = static_cast<int>(sqrtN);
if ((sqrtN - integerSqrtN) == 0)
{
integerSqrtN += 1;
result = static_cast<long long>(integerSqrtN) * integerSqrtN;
}
return result;
}'Algorithm > Practice' 카테고리의 다른 글
| [Algorithm] 하샤드 수 (0) | 2024.12.11 |
|---|---|
| [Algorithm] 정수 내림차순으로 배치하기 (0) | 2024.12.11 |
| [Algorithm] 문자열을 정수로 바꾸기 (1) | 2024.12.10 |
| [Algorithm] 자연수 뒤집어 배열로 만들기 (0) | 2024.12.10 |
| [Algorithm] x만큼 간격이 있는 n개의 숫자 (1) | 2024.12.09 |