[백준] 이게 분수? (2863)(kotlin)

문제 설명

백준 2863번 문제 링크

입력 및 출력

» 입력

첫째 줄에 A와 B가 공백으로 구분되어 주어진다. 둘째 줄에 C와 D가 공백으로 구분되어 주어진다. 모든 수는 100보다 작거나 같은 양의 정수이다.

» 출력

첫째 줄에 표를 몇 번 돌려야 표의 값이 최대가 되는지 출력한다. 만약, 그러한 값이 여러개라면 가장 작은 값을 출력한다.

예제 입출력(테스트케이스)

입력 출력
1 2
3 4
2

문제 풀이1

import java.io.BufferedReader
import java.io.InputStreamReader

fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
    var matrix = arrayOf(
        readLine().split(" ").map { it.toFloat() }.toFloatArray(),
        readLine().split(" ").map { it.toFloat() }.toFloatArray()
    )
    var max = matrix[0][0] / matrix[1][0] + matrix[0][1] / matrix[1][1]
    var maxIdx = 0

    repeat(3) {
        matrix = rotateMatrix(matrix)
        val newMax = matrix[0][0] / matrix[1][0] + matrix[0][1] / matrix[1][1]
        if (newMax > max) {
            max = newMax
            maxIdx = it + 1
        }
    }

    println(maxIdx)
}

fun rotateMatrix(matrix: Array<FloatArray>): Array<FloatArray> {
    return arrayOf(
        floatArrayOf(matrix[1][0], matrix[0][0]),
        floatArrayOf(matrix[1][1], matrix[0][1])
    )
}