본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 1783번: 병든 나이트 -Python

728x90

[백준알고리즘] 1783번: 병든 나이트 -Python

https://www.acmicpc.net/problem/1783

 

1783번: 병든 나이트

첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

다른 분들의 코드도 봤는데 모두 비교문으로만 작성했다. 물론 약간씩 다르긴 했지만.

 

문제에서 중요한 점은 다음과 같다.

1. 항상 나이트가 오른쪽으로만 이동한다.

2. 4번 "이상" 이동 시에는 모든 이동 방법이 한 번 이상씩 사용되어야 한다.

3. 현재 위치한 점도 포함해서 센다.

 

 

1의 조건때문에 오른쪽으로 얼마나 이동할 수 있는가가 중요하다.

2의 조건때문에 오른쪽으로의 길이를 무시한다면 4가지의 이동 방법을 모두 한 번 이상씩 사용하기 위해서는 높이가 중요해진다. 또한 4번 이전에 이동시에는 중복이 가능하다는 점이 중요하다.

 

직접 그림을 그려가면서 체크해봤따 ㅎㅎ;

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sys
 
n, m = map(int, sys.stdin.readline().split())
ans = 1
if n >= 3:
    if m >= 7:
        ans = m-2
    elif m >= 4:
        ans = 4
    else:
        ans = m
elif n == 2:
    if m >= 7:
        ans = 4
    else:
        ans = (m + 1)//2
sys.stdout.write(str(ans))

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90