[BOJ 실버2] 배열 돌리기 Kotlin

JIHOON·2022년 4월 12일
0

문제

풀이

  • 최근 많이 등장하는 구현문제, 평소에 자주 틀리던 구현문제이다. 대각선, 열, 행 하나씩 잡고 45도씩 이동시켜 새로운배열을 만들어 retrun하는 메소드를 구현하여 해결했다.

코드

fun main() = with(System.`in`.bufferedReader()) {
    val case = readLine().toInt()
    repeat(case){
        var (n,d) = readLine().split(" ").map{it.toInt()}
        var list = Array(n){
            MutableList(n){0}
        }
        repeat(n){
            list[it] = readLine().split(" ").map{it.toInt()}.toMutableList()
        }
        if(d<0){
            d += 360
        }
        var num = d/45
        repeat(num){
            list = changeList(list)
        }
        for(i in 0 until n){
            for(j in 0 until n){
                print("${list[i][j]} ")
            }
            println()
        }
    }
}


fun changeList(list : Array<MutableList<Int>>) : Array<MutableList<Int>>{
    var temp = Array(list.size){
        MutableList(list.size){0}
    }
    for(i in 0 until list.size){
        for(j in 0 until list.size){
            temp[i][j] = list[i][j]
        }
    }
    var n = temp.size
    for(i in 0 until n/2){
        temp[i][n/2] = list[i][i]
        temp[i][n-1-i] = list[i][n/2]
        temp[n/2][n-1-i] = list[i][n-1-i]
        temp[n-1-i][n-1-i] = list[n/2][n-1-i]
        temp[n-1-i][n/2] = list[n-1-i][n-1-i]
        temp[n-1-i][i] = list[n-1-i][n/2]
        temp[n/2][i] = list[n-1-i][i]
        temp[i][i] = list[n/2][i]
    }
    return temp
}
profile
https://github.com/Userz1-redd

0개의 댓글