문제
접근
m이 작아서 완전 탐색으로 풀었다.
0번째 칸에서 시작해서 한 턴에 한칸, 혹은 두 칸을 가는 경우에 대해 m번 째 턴까지 모든 경우를 확인했다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def bf(arr, idx, m, cnt, nowSize, flag):
if idx >= len(arr):
return nowSize
if m == cnt:
return nowSize
nowSize = nowSize // flag + arr[idx]
ans1 = bf(arr, idx+1, m, cnt+1, nowSize, 1)
ans2 = bf(arr, idx+2, m, cnt+1, nowSize, 2)
ans = max(ans1, ans2)
return ans
n, m = map(int, input().split())
arr = [0] + list(map(int, input().split()))
idx = 0
cnt = -1
nowSize = 1
flag = 1
print(bf(arr, idx, m, cnt, nowSize, flag))