[BOJ] 1783 병든 나이트 바로가기
병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다.
병든 나이트는 여행을 시작하려고 하고, 여행을 하면서 방문한 칸의 수를 최대로 하려고 한다. 병든 나이트의 이동 횟수가 4번보다 적지 않다면, 이동 방법을 모두 한 번씩 사용해야 한다. 이동 횟수가 4번보다 적은 경우(방문한 칸이 5개 미만)에는 이동 방법에 대한 제약이 없다.
체스판의 크기가 주어졌을 때, 병든 나이트가 여행에서 방문할 수 있는 칸의 최대 개수를 구해보자.
첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.
병든 나이트가 여행에서 방문할 수 있는 칸의 개수중 최댓값을 출력한다.
✍ 코드
# 1783 병든 나이트 < 실버 4 >
from sys import stdin
N, M = map(int,stdin.readline().split()) # 세로, 가로
if N == 1: # 세로 길이가 1일 경우
count = 1 # 경우 없이 모두 1
elif N == 2: # 세로 길이가 2일 경우
if M <= 7: count = (M+1)//2 # 가로가 7보다 작을 경우 (M+1)//2
else: count = 4 # 나머지 모든 경우 4
elif 3 <= N: # 세로 길이가 3이상일 경우
if M <= 4: count = M # 가로가 4보다 작은 경우 M
elif 5 <= M <= 6: count = 4 # 5~6의 경우 4
else: count = M - 2 # 나머지 모든 경우 M - 2
print(count)