https://www.acmicpc.net/problem/21735
21735번: 눈덩이 굴리기
눈송이들이 많은 동네인 숙명여대 앞마당에서 눈사람 만들기 대회를 연다. 앞마당의 길이는 $N$이고 위치 $1$부터 위치 $N$ 까지만 눈이 쌓여있다. 위치 $i$에 눈이 $a_i$만큼 쌓여있다. 대회 규칙은
www.acmicpc.net
간단한 브루트 포스 문제.
시작점은 0이므로 다음 눈덩이의 위치는 1, 2 두가지가 가능하다.
만약 앞마당의 길이가 2가 되지 않는다면 2는 생략한다.
0에서 1로 가게되면 그대로 눈덩이의 크기를 전달하고
0에서 2로 가게되면 눈덩이의 크기를 절반을 만들어서 함수에 넣는다.
이후 1에서는 2, 3 / 2에서는 3, 4 / ... / n-1, n 까지 도달하도록 재귀함수를 작성한다.
시간이 제한시간과 같아지거나 인덱스가 마당의 끝까지 도달하면 종료한다.
def Back(time, index, value):
global answer
value += arr[index]
if time == m:
answer = max(answer, value)
return
if index == n-1:
answer = max(answer,value)
return
if index+1 < n:
Back(time+1, index+1, value)
if index+2 < n:
Back(time+1, index+2, value//2)
n, m = map(int,input().split())
arr = list(map(int,input().split()))
answer = 0
Back(1, 0, 1)
if n > 1:
Back(1, 1, 0)
print(answer)
'백준(BOJ)' 카테고리의 다른 글
[Python/파이썬] - 백준(BOJ) 2644번 : 촌수계산 (0) | 2022.05.11 |
---|---|
[Java/자바] - 백준(BOJ) 2636번 : 치즈 (0) | 2022.05.11 |
[Python/파이썬] - 백준(BOJ) 21278번 : 호석이 두 마리 치킨 (0) | 2022.05.08 |
[Python/파이썬] - 백준(BOJ) 2178번 : 미로 탐색 (0) | 2022.05.07 |
[Python/파이썬] - 백준(BOJ) 1826번 : 연료 채우기 (0) | 2022.05.07 |