-문제: https://www.acmicpc.net/problem/1783
-정답풀이:
예제를 보니까 뭔가 규칙성이 있어서 탐색 스타일은 아닐 것 같다고 여겼다.
그리고 지나온 칸 수를 세는 건줄 알았는데, 그게 아니라 주어진 방법대로 움직이고, 멈춘 칸의 갯수를 세는 것이었다.
그걸 기준으로 세보니까 세로 최소 3, 가로 최소 7은 되어야 주어진 방법을 모두 사용할 수 있었고,
이보다 작은 수들로는 그냥 가능한걸로 아무거나 움직이면 된다.
이 경우에 따라 모두 나눠야 하기 때문에 어려웠던 것 같다.
n==3이 기준이니까 이보다 작은 1,2인 상황에 대해서도 작성하면 된다
n==2일 때 min(4,(m+1)//2)가 이해가지 않았는데,
2x1일 때는 1, 2x2일 때는 1, 2x3일 때는 2, 2x4일 때는 4, m>=4이상이면 움직일 수 없다(4칸은 지나쳐왔기때문에 이전과는 다른 방법으로 진행해야하는데, 세로 칸 수 때문에 할 수 없다)는 것을 써보니까 이해가 됐다
n>=3일 때, 가로가 6이하면 1,2,3,4 순서로 진행되고, m이 5,6일 때는 4보다 더 움직일 수 없다
m-2는 왜 하는 걸까??
n,m=map(int,input().split())
if n == 1:
print(1)
elif n == 2:
print(min(4,(m+1)//2))
else: #n>=3
if m<=6:
print(min(4,m))
else:
print(m-2)
'백준 > Greedy' 카테고리의 다른 글
[그리디/백준] 15903번: 카드 합체 놀이 (0) | 2022.07.09 |
---|---|
[그리디/백준] 11497번: 통나무 건너뛰기 (0) | 2022.07.09 |
[그리디/백준] 2847번: 게임을 만든 동준이 (0) | 2022.07.07 |
[그리디/백준] 1543번: 문서 검색 (0) | 2022.07.05 |
[그리디/백준] 2437번: 저울 (0) | 2022.07.05 |