본문 바로가기
코딩테스트

[프로그래머스] 제곱수 판별하기

by liz_devel 2025. 12. 19.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(n: Int): Int {
        val sqrt = kotlin.math.sqrt(n.toDouble()).toInt()
        return if(sqrt * sqrt == n) 1 else 2
    }
}

🖊 문제 풀이 시 알면 좋을 것

문제 요약

정수 n이 주어질 때,

  • n제곱수이면 1 반환
  • 제곱수가 아니면 2 반환

 

제곱수란?

어떤 자연수를 자기 자신과 곱해서 만들 수 있는 수

예시

  • 12 × 12 = 144 → 제곱수
  • 31 × 31 = 961 → 제곱수
  • 10 → 제곱수 아님

 

  1. n제곱근을 구한다
  2. 제곱근을 정수로 변환한다
  3. 다시 제곱해서 n과 같으면 제곱수

 

sqrt란?

  • sqrt는 square root의 줄임말
  • 읽는 법: 스퀘어 루트
  • 의미: 제곱근
sqrt(144) = 12
sqrt(10)  = 3.162277...

 

kotlin.math.sqrt()

kotlin.math.sqrt(값)

역할

  • 숫자의 제곱근을 Double 타입으로 반환

주의사항

  • sqrt()는 Double 타입만 받을 수 있음
  • 따라서 Int → Double 변환 필요
n.toDouble()

 

toInt()의 의미

sqrt(n.toDouble()).toInt()

 

  • toInt()는 소수점 버림
  • 반올림 아님

예시

3.9.toInt()  // 3
3.1.toInt()  // 3

 

즉,

sqrt(10) ≈ 3.16 → 3

 

반응형