💬 문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
🚫 제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
📢 입출력 예
👨🏫 입출력 예 설명
📃 제출 코드
class Solution {
public long solution(long n) {
long answer = -1;
long sqrt = (long) Math.sqrt(n);
if (sqrt * sqrt == n) {
answer = (long)Math.pow(sqrt + 1, 2);
}
return answer;
}
}
✏ 해결방법 & 배운점
접근방법
- 정수 `n`의 제곱근을 구한다.
- 제곱근을 다시 제곱하여 원래 숫자 `n`과 같은지 확인한다.
- 만약 제곱근의 제곱이 `n`과 같다면 제곱근에 1을 더한 후 그 값을 다시 제곱하여 새로운 값을 구한다.
'PS > LV.1 프로그래머스 문제' 카테고리의 다른 글
[프로그래머스] LV.1 평균 구하기 - 자바 [9/80] (0) | 2024.07.16 |
---|---|
[프로그래머스] LV.1 짝수와 홀수 - 자바 [8/80] (0) | 2024.07.16 |
[프로그래머스] LV.1 정수 내림차순으로 정렬하기 - 자바 [6/80] (0) | 2024.07.15 |
[프로그래머스] LV.1 자연수 뒤집어 배열로 만들기 - 자바 [5/80] (0) | 2024.07.15 |
[프로그래머스] LV.1 자릿수 더하기 - 자바 [4/80] (0) | 2024.07.15 |