Part6.1_완전탐색_깊이,넓이 우선탐색활용_최대점수 구하기

Eugenius1st·2022년 1월 28일
0

Python_algorithm

목록 보기
44/83

최대점수 구하기..

기본적으로 배웟던 DFS로 하는데..
40점 나오고 심지어
엄청 오래걸려서 fix 했다..;;
공개할 필요 없지만 굳이 풀이를 보이자면

DFS만 참고하면 이렇다..강의나 봐야지

선생님 코드

두가닥으로 뻗으면 된다
예를들어
{1 2 3 4 5} 에서
1을 푼다, 풀지않는다
2를 푼다, 풀지않는다
3을 푼다, 풀지않는다
4를 푼다, 풀지않는다
5를 푼다, 풀지않는다
그리고 마지막에 판단하면 된다.

아 너무 쉽고 ;;
생각을 하나로 하는 것 밖에 안되는
단세포 안유진,...휴''

import sys
sys.stdin = open("input.txt", "rt")

def DFS(L, sum, time):
    global res
    if time > m:
        return
    if L == n:
        if sum > res:
            res=sum
    else:
        DFS(L+1,sum+pv[L], time+pt[L])
        DFS(L+1,sum, time)

if __name__ == "__main__":
    n,m = map(int,input().split()) # 5 20
    pv=list()
    pt=list()
    for i in range(n):
        a, b = map(int,input().split())
        pv.append(a)
        pt.append(b)
    res=-2147000000
    DFS(0, 0, 0) #Level , Score, Time 여긴 논리가 비슷하네.. 
    print(res)
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글