백준 | 병든 나이트

justhaza.log·2024년 11월 29일

알고리즘: BOJ

목록 보기
96/125

백준 병든 나이트


  1. N이 1인 경우
    위아래로의 이동이 불가하므로, 시작점이 유일하게 방문 가능한 칸이다.

  2. N이 2인 경우
    2번, 3번 이동을 이용하여 이동 가능하다.
    다만, 1번과 4번 이동을 사용할 수 없기 때문에, 이동 횟수가 네 번 이상이면 4가지 이동을 한 번씩 사용해야 한다는 조건에 의해 최대 세 번 이동 가능하다.
    이때 방문 가능한 칸의 수는 4이므로, m(세로 길이)에 따라 min(4, (m + 1) // 2)이 방문 가능한 칸이다.

  3. N이 3 이상인 경우
    모든 이동(1번~4번)을 사용할 수 있다.
    이때 m이 7 미만이면 min(4, m), 7 이상이면 5 + (m - 7)이 최대 방문 칸 수이다.


# 정답

import sys


n, m = map(int, sys.stdin.readline().strip().split())

if n == 1:
    print(1)
elif n == 2:
    print(min(4, (m + 1) // 2))
else:
    if m < 7:
        print(min(4, m))
    else:
        # 5: 1번~4번 이동을 먼저 사용해서 방문할 수 있는 칸 수
        # m - 7: 1번, 4번 이동을 사용해서 방문할 수 있는 최대 칸 수
        print(5 + (m - 7))
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글