문제
풀이
- 최근 많이 등장하는 구현문제, 평소에 자주 틀리던 구현문제이다. 대각선, 열, 행 하나씩 잡고 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
}