Python - [백준]1783-병든 나이트

Paek·2023년 2월 20일
0

코테공부

목록 보기
34/44

출처

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

문제

위의 규칙을 만족하면서 움직일 수 있는 최대 값을 구하는 문제이다.

접근 방법

이 문제 처음 해석하는데에 난항을 겪었지만, 조건을 잘 짜주는 문제였다.

  1. n == 1인 경우, 나이트는 절대 움직일 수 없다. 방문 횟수는 1이다.
  2. n == 2인 경우, 2번과 3번의 규칙을 사용하여 움직 일 수 있지만, 아무리 가로가 길어도 제약 조건에 따라 4번이 최대이다. 그래서 4번과 (m+1)//2 중 최솟값이 정답이다.
  3. n은 3 이상이지만 m이 6 이하인 경우 : 이 경우는 4번의 규칙을 모두 사용하여 움직였을때 최대 값이 4이고, 최소값은 가로의 길이가 될 것이다.
  4. 이외 더 큰 경우, 최초 한번씩 2번3번 규칙을 사용하여 2칸씩 건너뛴 경우 한번씩을 제외하고는 가로의 길이가 정답이다. 결국 m-2가 되는것이다.

풀이

n, m = map(int, input().split())

if n == 1:
    print(1)
if n == 2:
    print(min(4, (m+1)//2))
if m <= 6:
    print(min(4, m))
else:
    print(m-2)
profile
티스토리로 이전했습니다. https://100cblog.tistory.com/

0개의 댓글