728x90
https://www.acmicpc.net/problem/14501
문제 접근
- 주어진 기간동안 상담을 진행할때 벌어들일 수 있는 최대 수익을 구하는 문제
- 주어진 범위 값이 크지 않아 재귀함수를 통해 모든 경우의 수를 전부 구함
- 경우의 수를 구할 때 고려할점은 해당 날짜에 상담을 할 것인지 말 것인지를 결정하는 것
정답 코드
n = int(input())
ans = 0
consulting = []
def go(n, index, temp):
if index == n:
global ans
if ans < temp:
ans = temp
return
if index > n:
return
# 상담을 하는 경우
go(n, index + consulting[index][0], temp + consulting[index][1])
# 상담을 안하는 경우
go(n, index+1, temp)
for i in range(n):
t, p = map(int, input().split())
consulting.append((t, p))
go(n, 0, 0)
print(ans)
이번 문제는 4달전쯤에 백준 강의를 들을 때 풀었던 문제...어느정도 기억나서 쉽게 풀었음
재귀함수 연습하기 좋은문제
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준 - 13458(시험 감독, python) (0) | 2023.06.19 |
---|---|
백준 - 14888(연산자 끼워넣기, python) (0) | 2023.06.18 |
백준 - 11651(좌표 정렬하기, python) (0) | 2023.06.18 |
백준-3009(네 번째 점, python) (0) | 2023.06.15 |
백준 - 2581(소수, python) (0) | 2023.06.03 |