[백준] A/B - 3 (16204)(kotlin)

원본 문제

문제 설명

두 정수 A와 B를 입력받은 다음, A/B의 몫과 나머지를 출력하는 프로그램을 작성하시오.

어떤 정수 q와 r에 대해 A = qB + r (0 ≤ r < B )로 나타낼 수 있을 때, q를 몫, r을 나머지라고 한다.

입력

첫째 줄에 A와 B가 주어진다. (-10^10000 ≤ A, B ≤ 10^10000, B ≠ 0)

출력

첫째 줄에 A/B의 몫, 둘째 줄에 나머지를 출력한다.

테스트 케이스

입력 출력
5 2 2
1
7 3 2
1
7 -3 -2
1
-7 3 -3
2
-7 -3 3
2
0 -2 0
0

문제 풀이1

import java.math.BigInteger
import java.util.Scanner

fun main(args: Array<String>) {
    val sc = Scanner(System.`in`)
    val a = sc.nextBigInteger()
    val b = sc.nextBigInteger()

    if (a == BigInteger.ZERO) println("0\n0")
    else {
        var q = a / b
        when {
            a < BigInteger.ZERO && b < BigInteger.ZERO -> {
                q += BigInteger.ONE
                println(q)
                println(a - q * b)
            }
            a < BigInteger.ZERO -> {
                q -= 1.toBigInteger()
                println(q)
                println(a - q * b)
            }
            b < BigInteger.ZERO -> {
                println(q)
                println(a - q * b)
            }
            else -> {
                println(q)
                println(a % b)
            }
        }
    }
}