문제 : 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴
제한사항 :
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
풀이 : bool 값으로 리턴이 되는 Tryparse 를 사용하려다가 string 으로 캐스팅하게되고... 이를 Long 타입으로
변환 하니 시간이 느릴 수밖에... 캐스팅을 적게 해야하는것을 생각하며 코딩 해봐야겠다..
public static long solution(long n)
{
long answer = 0;
int result;
if (int.TryParse(Math.Sqrt(n).ToString(), out result))
{
answer = (long)Math.Pow((result + 1), 2);
}
else
{
answer = -1;
}
return answer;
}
풀이2 : 다른 사람 풀이인데 중간에 제곱근함수에 나온 값을 정수 판별하는법을 배우게 된거같다!
using System;
public class Solution {
public long solution(long n) {
long answer = 0;
var sqrt = Math.Sqrt(n);
if (sqrt % 1.0 != 0)
return -1;
answer = (long)sqrt;
answer += 1;
answer *= answer;
return answer;
}
}
'알고리즘 > C#' 카테고리의 다른 글
[C#] 최대 공약수와 최소 공배수 - 프로그래머스 (0) | 2020.10.19 |
---|---|
[C#] 제일 작은 수 제거하기 - 프로그래머스 (0) | 2020.10.18 |
[C#] 정수 내림차순으로 배치하기 - 프로그래머스 (0) | 2020.10.17 |
[C#] 자연수 뒤집어 배열로 만들기 - 프로그래머스 (0) | 2020.10.17 |
[C#] 자릿수 더하기 - 프로그래머스 (0) | 2020.10.17 |