본문 바로가기

Algorithm/프로그래머스

[프로그래머스/Java] 정수 제곱근 판별

728x90
반응형

//문제를 보자마자 생각한 코드
class Solution {
	public long solution(long n) {
    	double sqrt = Math.sqrt(n);
        if(sqrt == (int)sqrt) {
        	return (long)Math.pow(sqrt+1, 2);
        } else {
        	return -1;
        }
    }
}

//더 간단하게 만들어 본 코드
class Solution {
	public long solution(long n) {
    	double sqrt = Math.sqrt(n);
        return sqrt == (int)sqrt ? (long)Math.pow(sqrt+1, 2) : -1;
    }
}

//다른 사람이 푼 코드
class Solution {
	public long solution(long n) {
    	double i = Math.sqrt(n);
        return Math.floor(i) == i ? (long)Math.pow(i+1, 2) : -1;
    }
}

Math.floor(i) -> i 를 내림 처리.

i가 정수일 경우 i 그대로, 아닐 경우 i보다 작은 가장 큰 정수를 반환.

그 후 i와 비교, i가 정수일 경우에만 참.

조건을 이렇게 신박하게 줄수도 있구나

한 문제를 여러 가지 방법으로 푸는것도 도움이 많이 되는것 같다.

 

728x90
반응형