몰?.루();
백준 14499번 코틀린 본문
문제에서 주사위 위치를 (x, y)로 나타낸다고 했는데
사실 x와 y가 반대이다...
즉 x가 row이고 y가 column이다;;
fun main() {
val (n, m, y, x, k) = readln().split(" ").map { it.toInt() }
val map = Array<IntArray>(n) { IntArray(m) }
repeat(n) {
map[it] = readln().split(" ").map { it.toInt() }.toIntArray()
}
val cmd = readln().split(" ").map { it.toInt() }
val dice = Dice()
var r = y
var c = x
val dr = intArrayOf(0, 0, 0, -1, 1)
val dc = intArrayOf(0, 1, -1, 0, 0)
for (a in cmd) {
// 동쪽은 1, 서쪽은 2, 북쪽은 3, 남쪽은 4
val nextR = r + dr[a]
val nextC = c + dc[a]
if (nextR in 0 until n && nextC in 0 until m) {
dice.move(a, map, nextR, nextC)
r = nextR
c = nextC
}
}
}
data class Dice(var top: Int = 0, var bottom: Int = 0, var left: Int = 0, var right: Int = 0, var front: Int = 0, var back: Int = 0) {
fun move(direction: Int, map: Array<IntArray>, r: Int, c: Int) {
// 동쪽은 1, 서쪽은 2, 북쪽은 3, 남쪽은 4
when(direction) {
1 -> {
val temp = left
left = bottom
bottom = right
right = top
top = temp
}
2 -> {
val temp = right
right = bottom
bottom = left
left = top
top = temp
}
3 -> {
val temp = front
front = bottom
bottom = back
back = top
top = temp
}
4 -> {
val temp = back
back = bottom
bottom = front
front = top
top = temp
}
}
if (map[r][c] == 0) {
map[r][c] = bottom
} else {
bottom = map[r][c]
map[r][c] = 0
}
println(top)
}
}
Comments