본문 바로가기
PROGRAMMING

[PG/Python] 피로도

by 안녕나는현서 2021. 12. 22.
728x90

📌 문제

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

 

코딩테스트 연습 - 피로도

XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던

programmers.co.kr

 

📌 문제 접근 방법

  1. 던전의 개수가 8개 이하이므로 완전탐색을 사용해도 되겠다고 판단하였다.
  2. permutations를 사용하여 던전을 들어가는 순서의 조합을 모두 만든 후, 각각의 조합을 차례대로 순회하며 입장할 수 있는 던전의 개수를 세었다.
  3. 개수를 다 세고 answer를 최대값으로 갱신하고, 반복문이 끝난 뒤 answer에 저장된 값을 반환하였다.

 

📌 코드

from itertools import permutations

def solution(k, dungeons):
    answer = 0
    
    for perm in permutations(dungeons, len(dungeons)):
        stack = list(perm)
        hp = k
        cnt = 0
        
        while stack:
            need, use = stack.pop()
            
            if hp >= need:
                hp -= use
                cnt += 1
        
        answer = max(answer, cnt)
        
    return answer
728x90

댓글