문제 : 정수 제곱근 판별
사용언어 : C#
문제 내용
문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예
n | return |
121 | 144 |
3 | -1 |
입출력 예 설명
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
내 풀이
System의 Math 클래스의 Sqrt()함수를 사용했다.
Sqrt()함수는 double 자료형을 반환하지만, long 자료형으로 형변환을 했다.
(어떤 수의 정수 제곱근이 아니라면 long타입 형변환을 했을 때 뒤의 소수점들이 없어진다.)
그리고 정수 제곱근인지 판정을 삼항연산자를 사용해서 answer에 한줄로 넣어주었다.
using static System.Math;
public class Solution {
public long solution(long n) {
long answer = 0;
long test;
test = (long)Sqrt(n);
answer = (n == test * test) ? (test + 1) * (test + 1) : -1;
return answer;
}
}
Math.Sqrt(double) 함수
public static double Sqrt (double d);
지정된 숫자의 제곱근을 반환한다.
3항 조건부 연산자
condition ? consequent : alternative
condition 식은 true 또는 false로 계산되어야 한다.
true로 게산되면 consequent 식이 계산되고, 해당 결과가 연산 결과가 된다.
false로 계산되면 alternative 식이 계산되고, 해당 결과가 연산 결과가 된다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스] [C#] 연습문제 > 자연수 뒤집어 배열로 만들기 (0) | 2023.03.30 |
---|---|
[프로그래머스] [C#] 정렬 > K번째수 (0) | 2023.03.28 |
[프로그래머스] [C#] 스택/큐 > 기능개발 (0) | 2023.03.28 |
[프로그래머스] [C#] 연습문제 > 최댓값과 최솟값 (0) | 2023.03.28 |
[프로그래머스] [C#] 연습문제 > 약수의 합 (0) | 2023.03.27 |