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

윤민선·2026년 8월 18일

프로그래머스

목록 보기
68/78
post-thumbnail

문제 설명

임의의 양의 정수 n이 주어질 때, n의 제곱근이 정수이면 (√n + 1)²을, 아니면 -1을 반환하는 문제이다.

n = 121 → √121 = 11 (정수) → (11+1)² = 144
n = 3   → √3 = 1.732... (정수 아님) → -1

접근 방법

  1. Math.sqrt(n)으로 제곱근 구하기
  2. 제곱근이 정수인지 판별하기
n = 9  → x = 3.0
(long)x = 3 → (double)3 = 3.0 == 3.0  ✅ 정수

n = 10 → x = 3.1622...
(long)x = 3 → (double)3 = 3.0 ≠ 3.1622  ❌ 정수 아님

구체적으로 정리한 풀이 흐름:

  1. Math.sqrt(n)으로 제곱근 x 구하기
  2. (double)(long) x == x로 정수 여부 판별
  3. 정수이면 (long)((x + 1) * (x + 1)) 반환
  4. 정수 아니면 -1 반환

최종 코드

class Solution {
    public long solution(long n) {
        double x = Math.sqrt(n);

        if ((double)(long) x == x) {
            return (long) ((x + 1) * (x + 1));
        } else {
            return -1;
        }
    }
}

실행 결과

0개의 댓글