완전탐색 - 피로도 (Level 2)

jisu_log·2025년 3월 19일

알고리즘 문제풀이

목록 보기
1/105
post-thumbnail

풀이: dungeons 리스트에 대해 모든 가능한 순서로 나열한 경우를 순열(Permutations)로 생성하고,
생성한 순열 리스트를 모두 탐색하며 탐색 가능한 최대 던전 수를 찾아 리턴한다.

from itertools import permutations

def solution(k, dungeons):
    
    all_perm = list(permutations(dungeons)) # 던전들의 모든 가능한 순서를 순열로 생성
    max_cnt = 0 # 최대 던전 수
    
    for elem in all_perm: # 모든 순열 탐색
        now_k = k # 매 경우 초기화
        cnt = 0
        for i in range(0, len(elem)): # 현재 경우의 모든 던전을 돌기
            if elem[i][0] <= now_k: # 최소 필요 피로도보다 현재 남은 피로도가 더 크거나 같을 경우 (탐험 가능)
                now_k -= elem[i][1] # 피로도 감소
                cnt += 1 # 탐험한 던전 수 누적
            else: # 탐험 불가능한 경우
                break # for문 종료
        # 현재 경우의 탐험 가능한 던전 탐험 종료됨
        if cnt > max_cnt: # 지금까지의 최대 던전 수보다 더 큰 경우 갱신
            max_cnt = cnt
    
    return max_cnt # 최대 던전 수 리턴

0개의 댓글