Kotlin/Kotlin 알고리즘

백준 13706번 제곱근 Kotlin 구현해보기

kimc 2022. 9. 18. 22:28

```

백준 13706번 제곱근  Kotlin 구현해보기

```

Kimc Kotlin Study

이번 글을 통해 배워갈 내용

  1. 백준 13706번 제곱근  Kotlin 구현해보기

https://www.acmicpc.net/problem/13706

 

13706번: 제곱근

첫째 줄에 양의 정수 N이 주어진다. 정수 N의 제곱근은 항상 정수이며, N의 길이는 800자리를 넘지 않는다.

www.acmicpc.net

 

백준 13706번 제곱근은

난이도 브론즈 등급의 문제로서

 

정수 제곱근을 가지는

800자리 이하의 수 N이 주어지면

N의 제곱근을 구해서 출력해주면 되는 문제입니다


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


 

BigInteger를 사용해서

800 자리 이하의 수 n을 입력받고

이분 탐색을 이용해서

n의 제곱근을 구했습니다

 

 

import java.math.BigInteger

fun main(args: Array<String>) {
    // 입력
    val n = BigInteger(readln())
    // 출력
    print(findSqrt(n))
}

fun findSqrt(n: BigInteger): BigInteger {
    val MAX_TRY = 3000
    var low = BigInteger("1")
    var high = n
    var ans = BigInteger("-1")

    for (i in 0..MAX_TRY) {
        val mid = (low + high) / BigInteger("2")
        val midSq = mid * mid
        if (midSq == n) {
            ans = mid
            break
        } else if (midSq > n) {
            high = mid - BigInteger("-1")
        } else if (midSq < n) {
            low = mid + BigInteger("-1")
        }
    }
    return ans
}


// https://codemasterkimc.tistory.com/

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90