몽상실현개발주의

[BOJ] 1783 / 병든 나이트 / Python 파이썬 본문

Algorithm PS/BOJ

[BOJ] 1783 / 병든 나이트 / Python 파이썬

migrationArc 2021. 7. 4. 16:43

[BOJ] 1783 / 병든 나이트 / Python 파이썬

[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)
Comments