문제 설명 |
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. |
제한 조건 |
|
입출력 예 |
|
n | return |
121 | 144 |
3 | -1 |
|
나의 풀이
1. 제곱근 판별 Math.sqrt(n) 함수 사용하여 제곱근 판별
2. n의 2제곱을 정수로 바꾼 것의 제곱이 n과 같으면 n은 제곱근, 같지 않으면 -1 리턴
3. Math.pow를 이용하여 n+1의 제곱근을 구함
class Solution {
public long solution(long n) {
if(Math.pow((int)Math.sqrt(n), 2) == n)
return (long) Math.pow(Math.sqrt(n) + 1, 2);
return -1;
}
}
JAVA1 코드 정리
1. n이 1이면 4 리턴 (2의 제곱근 = 4)
2. 2부터 n의 값까지 반복문 실행
3. n을 i로 나눈 값이 i와 같고 n을 i로 나눈 나머지가 0이면 (i+1)의 제곱을 구함
4. 아니면 -1 리턴
class Solution {
public long solution(long n) {
if(n==1){
return 4;
}
for(long i=2;i<n;i++){
if(n/i == i && n%i ==0){
return (i+1)*(i+1);
}
}
return -1;
}
}
제곱근 같은 경우는 함수가 너무 잘되어있다. sqrt를 이용하여 제곱근의 값을 구하고, pow 함수를 이용하여 제곱을 구하면 된다. 이런 다양한 함수 덕분에 자바의 코딩이 훨씬 간결해지긴 하나 알고리즘 공부를 위해선 함수를 많이 사용하지 않고 코딩하는 법을 터득하는 게 도움이 될 것 같다. |
'프로그래머스 > Java | Level1' 카테고리의 다른 글
[프로그래머스/Java]Level1 - 제일 작은 수 제거하기 (0) | 2020.11.08 |
---|---|
[프로그래머스/Java]Level1 - 서울에서 김서방 찾기 (0) | 2020.11.07 |
[프로그래머스/Java]Level1 - 같은 숫자는 싫어 (0) | 2020.11.03 |
[프로그래머스/Java]Level1 - 콜라츠 추측 (0) | 2020.11.01 |
[프로그래머스/Java]Level1 - 짝수와 홀수 (0) | 2020.10.28 |