[백준] 이게 분수? (2863)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 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])
)
}