반응형
사이트명 : 프로그래머스(Programmers)
문제명 : 정수 제곱근 판별
언어 : 자바(Java)
정수 제곱근 판별 문제는
받은 n 숫자가 특정 숫자의 제곱인지 확인하고
제곱일 경우에는 n+1 숫자의 제곱을 구한 뒤 반환하면 되고
특정 숫자의 제곱이 아니라면 -1를 넣어 반환하면 된다
내 풀이방법은 아래와 같은데
먼저 정직하게 for 문을 돌려가며
n 값이 특정 수의 제곱인가를 판별하면 시간제한에 걸려서 망한다
Math.sqrt(값) 을 사용하면 무슨 값을 제곱했을 시 값이 나오게 되는지를 반환하는데
여기에 +1을 해 주고 (long) 타입으로 변환해주면 실제 제곱근이 몇인지 판별이 가능하다
long으로 형변환을 안해주면 판별이 불가능하므로 꼭 해줘야 한다
그래서 제곱근을 구한 뒤 제곱근끼리 한번 곱해줬을 시 n 값이 나오면
n에 +1을 해 줘서 그 제곱을 구한 후 반환하고
그렇지 않을 경우에는 -1을 넣어 반환한다
프로그래머스에 바로 적용 가능한 답안 코드는 아래와 같다
class Solution {
public long solution(long n) {
long answer = 0;
if((long)Math.sqrt(n) * (long)Math.sqrt(n) == n) {
answer = ((long)Math.sqrt(n) + 1) * ((long)Math.sqrt(n) +1);
} else {
answer = -1;
};
return answer;
}
}
반응형
'Language > 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 짝수와 홀수 풀이(Java) (0) | 2019.09.05 |
---|---|
프로그래머스 제일 작은 수 제거하기 풀이(Java) (0) | 2019.09.05 |
프로그래머스 정수 내림차순으로 배치하기 풀이(Java) (0) | 2019.09.04 |
프로그래머스 자연수 뒤집어 배열로 만들기 풀이(Java) (0) | 2019.09.04 |
프로그래머스 자릿수 더하기 풀이(Java) (0) | 2019.09.04 |
댓글