1783. 병든 나이트
1783번: 병든 나이트
첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
- 내 풀이
- 이동횟수가 4이상이면 전체를 도는 경우로 따져야 해서 4가 되어야한다.
- 전체 방법을 한번씩 한 이후에도 더 이동할 수 있는 경우
- 나는 앞에서 최대한 많이 이동할 수 있는 1,3번 방법의 수 + 2,4 한번씩 해서
- 2,4를 위한 공간을 뺀 m-5 에 +2 (2,4두가지방법) + 1 (첫 위치)
- = m-5+2+1 = m-2 로 두었다
- 1,3번이 불가능한 경우
- 나는 n-1//2 <0 일때로 두었지만, 이게 결국 n==2 일 경우
- m<7 인 경우는 무조건 4이하기 때문에 ((m-1)//2)+1 로 두었지만
- 사실 나눌 필요 없이 둘다 min(4, ((m-1)//2)+1) 로 합쳐도 됐을 것
n, m = map(int, input().split())
answer = 0
if n < 2 or m < 2:
print(1)
exit()
if m-5 < 2:
if n == 2:
answer = ((m-1)//2)+1
else:
answer = min(4, m)
else:
if (n-1)//2 > 0:
answer = m-2 # m-5+2+1
else: # n==2일때랑 같음
answer = min(4, ((m-1)//2)+1)
print(answer)
- 다른 사람 풀이
출처: https://kill-xxx.tistory.com/entry/Python-그리디-알고리즘백준-1783번-병든-나이트-풀이-자세한-그림-풀이
[개발바닥 꼬순내:티스토리]
n, m = map(int, input().split())
result = 0
# n이 1일 때 무조건 1
if n == 1:
result = 1
# n이 2일 때
elif n == 2:
if m >= 1 and m <= 6: #m이 1~6일 때
result = (m + 1) // 2
elif m >= 7: #7이상일 때
result = 4
# n이 3 이상일 때
elif n >= 3:
if m <= 6: #m이 1~6일 때
result = min(m, 4)
elif m >= 7: #m이 7 이상일 때
result = m - 2
print(result)
'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준][BFS][Union-Find] 11724.연결 요소의 개수 (0) | 2024.03.08 |
|---|---|
| [백준][벨만포드] 1865. 웜홀 (4) | 2024.03.07 |
| [백준][이진탐색][LIS] 11054. 가장 긴 바이토닉 부분 수열 (0) | 2024.03.01 |
| [백준][이진탐색][LIS] 12015. 가장 긴 증가하는 부분 수열 2 (0) | 2024.03.01 |
| [백준][DP][LIS] 11055. 가장 큰 증가하는 부분 수열 (1) | 2024.03.01 |