Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[프로그래머스] 정수 제곱근 판별(Lv.1) - 코틀린 본문

코딩테스트

[프로그래머스] 정수 제곱근 판별(Lv.1) - 코틀린

Wise-99 2023. 5. 8. 00:10
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

❓문제

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

 

❓ 제한사항

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

 

❓ 입출력 예

n return
121 144
3 -1

 


 

✔️ 정답 코드

import kotlin.math.*

class Solution {
    fun solution(n: Long): Long {
        val sqrt = sqrt(n.toDouble())
        
        if(sqrt % 1.0 == 0.0){
            return (sqrt + 1).pow(2.0).toLong()
        } else {
            return -1L
        }
        
    }
}

 

✔️ 코드 해석

val sqrt = sqrt(n.toDouble())
  • math 패키지를 import하여 sqrt()를 사용한다.
    • sqrt()는 제곱근을 리턴하는 메서드이다.
    • 해당 메서드는 double형의 변수나 실수만 가능하다.

 

	if(sqrt % 1.0 == 0.0){
            return (sqrt + 1).pow(2.0).toLong()
        } else {
            return -1L
        }
  • n의 제곱근을 1.0으로 나눴을 때 나머지가 0.0이면 제곱근 + 1하여 제곱을 구한다.
    • pow(n : Int)
      • n만큼 제곱한다.
      • Double형으로 반환된다.
  • Double형으로 반환된 수를 Long 타입으로 변환한다.
  • 1로 나누어지지 않는 수(나머지가 소수)라면 -1을 리턴한다.