본문 바로가기

프로그래머스

프로그래머스 LV2 피로도

728x90
answer = 0
def DFS(k,count,dungeons,check) :
    global answer;
    answer = max(answer,count);
    
    for i in range(len(dungeons)) :
        # 방문하지 않고 최소 피로도 보다 높을때 방문
        if check[i] == 0 and k >= dungeons[i][0] :
            # 방문완료
            check[i] = 1;
            
            DFS(k-dungeons[i][1],count + 1,dungeons,check);
            # 다시 방문해야하기때문에 방문체크 풀기
            check[i] = 0;
        
    
def solution(k, dungeons):
    global answer;
    
    # 방문 했는지 안했는지 체크하는 배열
    check = [0] * len(dungeons);
    
    # 탐색 시작
    DFS(k,0,dungeons,check)

            
    return answer

풀이 및 회고

완전 탐색 문제로 모든 경우의 수를 순회 한 후 가장많은 count를 가질때 return을 하게 해주었습니다.

728x90