Algorithm/Problems

99클럽 코테 스터디 22일차 TIL + 완전탐색

공부좀하시졍 2024. 11. 19. 00:16

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

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 한다.