문제
이번 정보올림피아드대회에서 좋은 성적을 내기 위하여 현수는 선생님이 주신 N개의 문제를 풀려고 합니다.
각 문제는 그것을 풀었을 때 얻는 점수와 푸는데 걸리는 시간이 주어지게 됩니다.
제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 하기
조건
해당문제는 해당시간이 걸리면 푸는 걸로 간주한다, 한 유형당 한개만 풀 수 있습니다.
제한사항
첫 번째 줄에 문제의 개수N(1<=N<=20)과 제한 시간 M(10<=M<=300)이 주어집니다.
두 번째 줄부터 N줄에 걸쳐 문제를 풀었을 때의 점수와 푸는데 걸리는 시간이 주어집니다.
첫 번째 줄에 제한 시간안에 얻을 수 있는 최대 점수를 출력합니다.
문제풀이
def go(L, tscore, ttime):
global tmax
if L==N:
if ttime<=M:
if tscore>tmax:
tmax=tscore
else:
go(L+1, tscore+pv[L], ttime+pt[L])
go(L+1, tscore, ttime)
N, M=map(int, input().split())
pv=[]
pt=[]
tmax=-21470000000
for i in range(N):
a, b=map(int, input().split())
pv.append(a)
pt.append(b)
go(0, 0, 0)
print(tmax)'파이썬 알고리즘 풀이' 카테고리의 다른 글
| 60)양팔저울(DFS) (0) | 2021.11.08 |
|---|---|
| 59)휴가(삼성 SW역량평가 기출문제: DFS활용) (0) | 2021.11.08 |
| 57)경로 탐색(그래프 DFS) (0) | 2021.11.08 |
| 56)인접행렬(가중치 방향그래프) (0) | 2021.11.08 |
| 55)수들의 조합 (0) | 2021.11.08 |