문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
풀이 코드
using System;
public class Solution {
public long solution(long n) {
var r = Math.Sqrt(n);
return (n % r == 0) ? (long)Math.Pow(r + 1, 2) : -1;
}
}
제곱근을 찾는 Math.Sqrt와 제곱을 해주는 Math.Pow를 이용해서 해당 문제를 해결하였다.
제곱근이 양의 정수인지 확인하기 위해서 나머지 연산시에 결과값이 0인지 확인해서 정수인지 실수인지 구분하였다.
함께 보면 좋은 글
'프로그래밍 > Algorithm' 카테고리의 다른 글
O(log n) 시간 복잡도란 무엇인가? (1) | 2023.12.01 |
---|---|
[백준 BAEKJOON] 1978번 소수 찾기 (0) | 2023.11.29 |
[프로그래머스 Programmers] 비밀지도 (2) | 2023.11.27 |
[프로그래머스 Programmers] 약수의 합 (4) | 2023.11.24 |
[프로그래머스 Programmers] 과일 장수 (0) | 2023.11.13 |
댓글