백준 문풀
[Python] 1783. 병든 나이트(실3) /그리디
브로코딩
2024. 2. 10. 02:41
목차
1. 문제
https://www.acmicpc.net/problem/1783
1783번: 병든 나이트
첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
2. 핵심 아이디어
https://lipcoder.tistory.com/94
병든 나이트 (백준 - 1783번)
그리디 알고리즘을 사용하는 문제였다. 우선 나이트의 모든 이동방법이 위, 아래 오른쪽으로 무조건 1칸 이상 움직이므로, 세로 길이가 1인 체스판의 경우에 나이트는 한번도 이동 할 수 없다.
lipcoder.tistory.com
3. 코드
#1783. 병든나이트(실3)
n,m= map(int, input().split())
if m<7 or n<3:
flag=False
else:
flag=True
result=1
if flag:
result= m-2 #1칸에 하나씩 움직이는 것 가능 + 5칸까지는 1번씩 움직임
else:
if n==1:
result=1
elif n==2:
result= min(((m-1)//2)+1,4)
elif m<7:
result= min(m, 4)
print(result)
4.배운점
아직 그리디적인 사고가 유연하게 떠오르지 않는다. 그것이 많은 조건을 포함하고 있다면 더욱 그렇다.
구현 문제로 접근했다가 시간초과를 받았다. 범위가 넓은 문제의 경우, 그리디적으로 사고하는 법을 익히자.