안드로이드 개발자의 창고
[프로그래머스] 정수 제곱근 판별(Lv.1) - 코틀린 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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형으로 반환된다.
- pow(n : Int)
- Double형으로 반환된 수를 Long 타입으로 변환한다.
- 1로 나누어지지 않는 수(나머지가 소수)라면 -1을 리턴한다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 치킨 쿠폰(Lv.0) - 코틀린 (0) | 2023.05.14 |
---|---|
[프로그래머스] 최댓값과 최솟값(Lv.2) - 코틀린 (2) | 2023.05.14 |
[프로그래머스] 특이한 정렬(Lv.0) - 파이썬 (0) | 2023.05.08 |
[프로그래머스] 겹치는 선분의 길이(Lv.0) - 파이썬 (2) | 2023.05.08 |
[프로그래머스] K번째 수(Lvl.1) - Java (0) | 2023.05.07 |