현재 피로도 K가 지금 진입하려던 던전이 요구하는 최소 피로도보다 높을 때에만 진입할 수 있으므로, 모든 던전을 입장하는 경우의 수를 permutations를 통해 구해 놓고 break를 통해 제어했다. cur_k를 통해 local 피로도를 카운트했다. 처음에는 queue를 통해 풀어볼 생각도 했는데, 이 경우에는 지금까지 들어왔던 던전의 수뿐만 아니라 종류 역시 queue 외부에서 조정해야 한다는 생각이 들어서 경우의 수 자체를 구해놓고 시작했다.
from itertools import permutations
def solution(k, dungeons):
ways = list(permutations(dungeons, len(dungeons)))
result = []
for way in ways:
total = 0
cur_k = k
tired = False
for dungeon in way:
if cur_k >= dungeon[0]:
cur_k -= dungeon[1]
total += 1
else:
tired = True
result.append(total)
break
if not tired: result.append(total)
return max(result)