본문 바로가기
Kotlin Language/programmers

Kotlin - 정수 제곱근 판별 프로그래머스 코딩 연습 ( 19 )

by Classic Master 2023. 12. 6.
728x90

프로그래머스 문제

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

n return
121 144
3 -1

입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.

입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

 

코틀린 정수 제곱근 판별 답

1)

import kotlin.math.*
class Solution {
    fun solution(n: Long): Long {
        var answer = sqrt(n.toDouble()).toLong()
        if(answer*answer == n) 
        answer = return ((answer+1)*(answer+1)).toLong()
        else return -1L
    }
}

 

2)

class Solution {
   fun solution(n: Long): Long {
        for (i in 0..n) {
            if (i * i == n) {
                return ((i + 1) * (i + 1))
            }
        }
        return -1
    }
}

 

코틀린 풀이

1)

sqrt(n.toDouble()).toLong() 주어진 정수 n의 제곱근을 구하고, 이를 정수로 변환하여 answer에 저장합니다.
if (answer * answer == n)이 answer의 제곱이 입력된 정수 n과 같다면,
answer = return ((answer + 1) * (answer + 1)).toLong()로 (answer + 1)의 제곱을 구하고 그 값을 반환합니다.
그렇지 않은 경우, else return -1L: 만약 answer의 제곱이 n과 같지 않다면 -1을 반환합니다.

 

2)

for (i in 0..n)를 사용하여 0부터 n까지의 모든 정수에 대해 반복합니다.
if (i * i == n)는 현재 정수 i의 제곱이 입력된 정수 n과 같다면,

return ((i + 1) * (i + 1)).toLong(): (i + 1)의 제곱을 계산하고 그 값을 반환합니다.
만약 반복이 끝날 때까지 일치하는 제곱이 없다면, return -1: -1을 반환합니다.

 

sqrt?

  • sqrt는 제곱근을 계산하는 수학 함수 중 하나입니다. "Square root"의 약어로, 어떤 수의 제곱근은 그 수를 제곱했을 때 원래의 수가 되는 값을 나타냅니다. 예를 들어, 9의 제곱근은 3이 됩니다.
728x90
반응형