알고리즘 : 프로그래머스 : JAVA : 정수 제곱근 판별
2022. 1. 19. 18:13ㆍ알고리즘/프로그래머스
반응형
<문제>
<코드 & 설명>
class Solution {
public long solution(long n) {
long sqrt = (long) Math.sqrt(n); // 1. 제곱근을 구해주는 함수다. 제곱근을 구해서
if(n == Math.pow(sqrt,2)) { // 2. 구한 제곱근을 제곱한뒤 n과 비교
return (long)(Math.pow(sqrt+1, 2)); //3.
}else { //4
return -1;
}
}
}
<설명>
임의의 양의 정수 n에 대해 n이 어떤 양의 정수 x의 제곱인지 판단하기 위해서, n의 제곱근을 제곱을 해준 뒤 n과 비교하면 된다.
1. Math.sqrt(n)를 통해 제곱근을 찾는다.
2. 1번에서 찾은 제곱근을 Math.pow()를 사용하여 제곱한뒤 비교한다.
3. n이 어떤 양의 정수 x의 제곱이라면, 1에서 찾은 제곱근에 1을 더한 후 제곱하여 리턴
4. 아닐 시 -1을 리턴.
<참고>
pow : 거듭제곱을 계산해주는 함수
Math.pow(숫자, 거듭제곱 횟수);
sqrt : 제곱근을 구해주는 함수
Math.sqrt(숫자);
어떤 수 a를 제곱해서 b가 될 때, a를 b의 제곱근이라고 한다.
ex) 2나 -2를 제곱하면 4가 된다. 4의 제곱근은 2나 -2이다.
49의 제곱근 = 7, -7
제곱근을 다른말로 근호, 또는 루트라고 한다. 대부분 루트라고 한다.
<다른 방법>
class Solution {
public long solution(long n) {
double root = Math.sqrt(n); // n의 제곱근 구하기
// answer는 n의 제곱근을 1로 나눈 나머지가 0이면 거기에1을 더해 제곱한 값 아니면 -1
long answer = (root%1==0)?(long)Math.pow(root+1, 2):-1;
return answer;
}
}
제곱근을 1로 나눈 나머지가 0이 아닌거는 3의 제곱근은 루트3이니 1로 나눴을 때 나머지가 0이 아니겠지. 그걸로 판별.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
알고리즘 : 프로그래머스 : JAVA : 이상한 문자 만들기 (0) | 2022.01.19 |
---|---|
알고리즘 : 프로그래머스 : JAVA : 제일 작은 수 제거하기 (0) | 2022.01.19 |
알고리즘 : 프로그래머스 : JAVA : 콜라츠 추측 (0) | 2022.01.19 |
알고리즘 : 프로그래머스 : JAVA : 하샤드 수 (0) | 2022.01.19 |
알고리즘 : 프로그래머스 : JAVA : 정수 내림차순으로 배치하기 (0) | 2022.01.19 |