본문 바로가기

문제 풀이/Programmers

[프로그래머스] 정수 제곱근 판별 (JAVA)

문제 출처 - Programmers

문제는 여기

 

코딩테스트 연습 - 정수 제곱근 판별

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함

programmers.co.kr


[풀이]

1. i를 0부터 i * i가 n이하가 될 때까지 반복해서 i * i가 n인지 판단한다.

2. 맞다면 (i + 1)의 제곱을 answer에 넣어준다.

3. 만약 answer의 값이 0이라면 위에서 못 구한 것이므로 -1로 리턴을 해주고 아니라면 answer을 리턴해준다.

[접근]

1. 제곱을 한 것이 n인지 확인하고 원하는 결과를 출력해주면 되겠다고 생각하였다.

[코드]

class Solution {
    public long solution(long n) {
        long answer = 0;
        
        for (long i = 0; i * i <= n; i++) {
            // 제곱이 n이라면
            if (i * i == n)
                // i + 1의 제곱을 넣어줌
                answer = (i + 1) * (i + 1);
        }
        
        // 값이 들어가있지 않으면 -1을 리턴, 있다면 answer 리턴
        return answer == 0 ? -1 : answer;
    }
}