Algorithm PS/BOJ
[BOJ] 1783 / 병든 나이트 / Python 파이썬
migrationArc
2021. 7. 4. 16:43
[BOJ] 1783 / 병든 나이트 / Python 파이썬
https://www.acmicpc.net/problem/1783
1783번: 병든 나이트
첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
풀이
모든 경우의 수 고려하는 방법으로 구하는 문제가 아닌 조건을 단순화하여 계산하는 문제이다.
나이트는 체스판의 가장 왼쪽 아래에서 오른쪽 방향으로 위 또는 아래로 움직일 수 있다.
이것은 충분한 세로 공간만 존재한다면, 오른쪽 방향으로만 움직이게 된다는 것이다.
1. 오른쪽 1칸 위 2칸 -> 오른쪽 1칸 아래 2칸 == 오른쪽 2칸
2. 오른쪽 2칸 위 1칸 -> 오른쪽 2칸 아래 1칸 == 오른쪽 1칸
이를 고려하여 세로 칸으로 나누어 고려 하였고, 이동회수에 제약을 추가하여 해결하였다.
N, M = map(int, input().split())
# 세로칸 이동 불가
if N < 2:
print("1")
# 세로칸 이동 1칸 가능
elif N < 3:
# 이동 회수 제약
if M < 7:
print((M+1)//2)
else:
print(4)
# 세로칸 이동 2칸 가능
else:
# 이동 회수 제약
if M < 5:
print(M)
elif M == 5:
print(4)
else:
print(M - 2)