본문 바로가기
Algorithm/programmers

[파이썬]programmers: 피로도

by 갈잃자 2023. 2. 27.

https://school.programmers.co.kr/learn/courses/30/lessons/87946

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


완전탐색 문제

 

return 조건을 만들기 위해 level을 사용하였고

 

현재피로도에 맞는 조건이라면 피로도를 깎으면서 +1 이 되게끔 하였다

 

마지막엔 최대 던전을 돈 횟수가 결과값으로 나오면 됨

def solution(k, dungeons):
    used = [0]*len(dungeons)
    Max = 0
    def dfs(level, fatigue,ans):
        nonlocal Max
        if fatigue < 0:
            return

        if level ==len(dungeons):
            Max = max(Max, ans)
            return

        for i in range(len(dungeons)):
            if used[i] ==1: continue
            used[i] = 1
            if fatigue < dungeons[i][0]:
                dfs(level+1, fatigue,ans)
                used[i] = 0
            else:
                dfs(level+1, fatigue-dungeons[i][1], ans+1)
                used[i] = 0

    dfs(0,k,0)
    return Max

댓글