문제
풀이
병든 나이트는 오른쪽 위나 아래로만 움직일 수 있으며 4칸 이상 방문한 경우에는 모든 방향으로 최소 한 번은 움직여야 하기 때문에 체스판의 크기에 따라 움직임이 제한된다.
- N = 1
아무 방향으로 움직일 수 없기 때문에 답은 1이다.
- N = 2
2번과 3번 방향으로만 움직일 수 있기 때문에 답은 (M+1)/2이다. 그러나 최대 4칸까지만 이동이 가능하다.
- N >= 3
1) M < 7: 1번과 4번 방향을 번갈아가면서 이동하는 것이 최대로 방문하는 방법이다. 따라서 답은 M이다. 그러나 최대 4칸까지만 이동이 가능하다.
2) M >= 7: 네 방향 모두 움직일 수 있고 답은 M - 2이다. (2번과 3번으로 이동할 때 2칸 이동하기 때문이다.)
코드
fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val (rows, cols) = br.readLine().split(' ').map{ it.toInt() }
bw.write(
if (rows == 1) "1"
else if (rows == 2) "${minOf((cols + 1) / 2, 4)}"
else {
if (cols < 7) "${minOf(cols, 4)}"
else "${cols - 2}"
}
)
bw.flush()
bw.close()
br.close()
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 2210번: 숫자판 점프 - Kotlin[코틀린] (1) | 2024.03.02 |
---|---|
[백준] 1914번: 하노이 탑 - Kotlin[코틀린] (0) | 2024.03.01 |
[백준] 1080번: 행렬 - Kotlin[코틀린] (0) | 2024.02.28 |
[백준] 1780번: 종이의 개수 - Kotlin[코틀린] (0) | 2024.02.27 |
[백준] 9205번: 맥주 마시면서 걸어가기 - Kotlin[코틀린] (0) | 2024.02.26 |