https://programmers.co.kr/learn/courses/30/lessons/12934
코딩테스트 연습 - 정수 제곱근 판별
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함
programmers.co.kr
이번 문제는 제곱근인지 아닌지 확인하는 건데, 사실 직접 풀면 수학적 난이도가 그렇게 높은 부분은 아니다.
하여 금방 풀 수 있을 줄 알았는데... 자바의 기본을 잠시 망각하면 풀기가 애매할 수도 있게 된다.
실제로 푸는 방법은 알겠는데, 그것 때문에 조금 애를 먹었다 ㅠ 역시 모든 문제는 이유가 있는 법!
자바의 메소드 중 하나인 Math.pow와 Math.sqrt 를 이용하면 편하게 구현이 가능하다.
(시간이 넘치시는 분들은 저 메소드를 직접 구현해봐도 재밌기는 할 듯??)
Math.pow(a, b) = 숫자 a를 b만큼 제곱해준 값을 리턴한다.
Math.sqrt(n) = n의 제곱의 숫자를 리턴한다.
[작성코드]
import java.lang.Math;
class Solution {
public long solution(long n) {
long answer = -1;
long temp = (long) Math.sqrt(n);
if (Math.pow(temp, 2) == n) {
answer = (long) Math.pow(temp + 1, 2);
}
return answer;
}
}
long타입을 너무 안써버릇해서... long타입으로 해야한다는 것을 계속 망각하고 있었다. 제한사항에 보면
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
라고 적혀있는데 말이야... 이런 바보같은 ㅠㅠ 역시 기본은 너무 중요하다. 끝.
[깃허브링크]
GitHub - RUCKUSJERRY/practiceOfAlgorithm
Contribute to RUCKUSJERRY/practiceOfAlgorithm development by creating an account on GitHub.
github.com