CODING/CS, 알고리즘, 자료구조 공부

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

codingTrip 2025. 6. 20. 13:01

나의 풀이

class Solution {
    public long solution(long n) {
        long answer = 0;
        long i = 1;
        while (i <= n) {
            if (Math.pow(i, 2) == n) {
                answer = (i + 1) * (i + 1);
                break;
            }
            i++;
        }
        if (answer == 0) {
            answer = -1;
        }
        return answer;
    }
}

while문을 사용해서 문제를 풀었다.

 

트러블슈팅

while (i < n/2) {
...
}

while문의 조건을 위와 같이 설정했더니 

i가 1일 경우에는 동작하지 않게 되었다.


 

다른 사람의 풀이

class Solution {
  public long solution(long n) {
      if (Math.pow((int)Math.sqrt(n), 2) == n) {
            return (long) Math.pow(Math.sqrt(n) + 1, 2);
        }

        return -1;
  }
}

깔끔하게 코드를 작성하신 점이 부럽다.

나는 answer 변수에 값을 저장하는 것에 집중했는데

answer 변수 없이 바로 return하는 것이 더 깔끔한 것 같다.

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12934/solution_groups?language=java