https://school.programmers.co.kr/learn/courses/30/lessons/87946
from itertools import permutations
def solution(k, dungeons):
answer = 0
for p in permutations(dungeons, len(dungeons)):
tmp = k
cnt = 0
for need, use in p:
if tmp >= need:
tmp -= use
cnt += 1
answer = max(answer, cnt)
return answer
- 간단하게 순열을 이용해 풀이했다.
- 순서를 고려해 중복없이 뽑아야 하므로 permutations(순열) 사용
- permutations(객체, r) : 객체 안에서 r개를 선택한다.
- p를 출력하면 ([80,20],[50,40],[30,10]) ( [80,20], [30,10], [50,40]) ... ([30, 10], [50,40], [80,20]) 로 총 6가지가 나온다.
- for문을 돌며 현재 피로도가 최소 필요 피로도 보다 크다면 소모 피로도를 계산하고 탐험한 던전 수 를 카운트한다.
- 그렇게 모든 경우의 수를 계산한 후 (완전탐색) 가장 큰 answer를 return 한다.
'Algorithm > Problems' 카테고리의 다른 글
99클럽 코테 스터디 24일차 TIL + 완전탐색 (0) | 2024.11.21 |
---|---|
99클럽 코테 스터디 23일차 TIL + 완전탐색 (0) | 2024.11.20 |
99클럽 코테 스터디 21일차 TIL + 완전탐색 (1) | 2024.11.17 |
99클럽 코테 스터디 20일차 TIL + 완전탐색 (0) | 2024.11.17 |
99클럽 코테 스터디 19일차 TIL + 그리디 (0) | 2024.11.16 |