백준 실버3 1783 병든 나이트 python
https://www.acmicpc.net/problem/1783
1783번: 병든 나이트
첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
문제 이해
위 그림과 같이 모든 경우가 들어가려면 N>=3 & M>=7 이어야 합니다.
오른쪽으로만 움직임이 가능하므로 결과값은 M에 영향을 받습니다.
만약 나이트가 가본 곳이 4곳 이상이면, 즉, N>=3 && M>=7 이라면,
모든 경우가 들어가야하므로 M은 이미 가로로 7 움직였습니다. => M-7
그리고 움직인 시점에서 가본 곳이 5곳이므로 ans = M-7+5 입니다.
모든 경우를 쓴 다음에는 오른쪽으로 1만큼 움직이는 것만 생각하므로 이 경우에 대해서는
ans = M-7+5 입니다.
그다음 경우는 N<3 인 경우입니다.
N == 1 인 경우에, 움직일 수 없으므로 N = 1 입니다.
N == 2 인 경우에는 최대 3만큼 가볼 수 있는데, (M+1)//2 한 만큼 가볼 수 있습니다.
최대 3만큼 움직이게 된다면 가본 곳이 4이므로 4와 (M+1)//2 중 작은 값을 가져오면 됩니다.
그 다음 경우는 M<7 인 경우입니다.
이 경우에도 가볼 수 있는 곳이 최대 4인데요.
4와 M 중 작은 값을 가져오면 됩니다.
코드
import sys
N, M = map(int, sys.stdin.readline().rstrip().split())
ans = 0
if N == 1:
ans = 1
elif N == 2:
ans = min(4, (M+1)//2)
elif M < 7:
ans = min(4, M)
else:
ans = M - 7 + 5 # 가로 7모두 써버림 & 쓴 다음의 방문한 5곳
print(ans)
Search 🔍
- min(4, )으로 작은 값을 찾은 점
- else문 코드줄
'코딩테스트' 카테고리의 다른 글
[백준] 1002 터렛 - python (2) | 2023.02.05 |
---|---|
[백준] 1966 프린터 큐 - python (2) | 2023.02.04 |
[백준] 2346 풍선 터뜨리기 - python (1) | 2023.02.03 |
[백준] 17175 피보나치는 지겨웡~ - python (2) | 2023.02.02 |
[백준] 1072 게임 - python (2) | 2023.02.02 |