CT/백준
[백준][JAVA] 병든 나이트
hyunji1109
2024. 12. 27. 11:09
문제
병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다.
- 2칸 위로, 1칸 오른쪽
- 1칸 위로, 2칸 오른쪽
- 1칸 아래로, 2칸 오른쪽
- 2칸 아래로, 1칸 오른쪽
병든 나이트는 여행을 시작하려고 하고, 여행을 하면서 방문한 칸의 수를 최대로 하려고 한다. 병든 나이트의 이동 횟수가 4번보다 적지 않다면, 이동 방법을 모두 한 번씩 사용해야 한다. 이동 횟수가 4번보다 적은 경우(방문한 칸이 5개 미만)에는 이동 방법에 대한 제약이 없다.
체스판의 크기가 주어졌을 때, 병든 나이트가 여행에서 방문할 수 있는 칸의 최대 개수를 구해보자.
입력
첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.
출력
병든 나이트가 여행에서 방문할 수 있는 칸의 개수중 최댓값을 출력한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
if (N == 1) {
System.out.println(1);
} else if (N == 2) {
System.out.println(Math.min(4, (M + 1) / 2));
} else if (M < 7) {
System.out.println(Math.min(4, M));
} else {
System.out.println(M - 2);
}
}
}
- N == 1
- 나이트가 세로 1칸만 움직일 수 있다.
- 항상 제자리에서 1칸만 방문 가능하다.
- N == 2
- 나이트는 2칸 위/아래로 이동하면서 1칸 왼쪽/오른쪽으로 이동할 수 있다.
- 가능한 이동 횟수는 (M + 1) / 2로 제한되어 최대 4칸을 방문할 수 있다.
- M < 7
- 가나이트의 모든 움직임을 다 사용하지 못하므로, 최대 방문 칸 수는 Math.min(4, M)이다.
- M >= 7
- 나이트는 모든 방향을 활용할 수 있으므로 M - 2칸을 방문할 수 있다.