프로그래머스 위클리 챌린지 피로도 코드 및 해설 (파이썬)

2021. 10. 26. 14:00algorithm

반응형

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

 

코딩테스트 연습 - 12주차

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

programmers.co.kr

 

시간제한 코테를 풀어보며 느낀 점...

그냥 생각 안 나면 약간 무식하게 느껴지더라도 모든 경우의 수를 고려해서 풀기 

그래서 itertools의 permutations로 모든 가능한 순서를 구하고, 그에 따라 최대로 방문할 수 있는 던전의 수를 구했다.

그 중 최댓값을 반환하면 된다

더 좋은 방법이 있겠지?? 

 

from itertools import permutations

# 주어진 순서에 따라 방문할 수 있는 던전의 수 
def count_dungeoun(k, dungeons):
    result = 0
    for dungeon in dungeons:
        need, minus = dungeon
        if k < need:
            return result
        k -= minus
        result += 1
    return result

def solution(k, dungeons):
    # 모든 가능한 순서로 섞기 
    shuffled = permutations(dungeons, len(dungeons))
    answers = []
    for s in shuffled:
        answers.append(count_dungeoun(k, s))
    
    return max(answers)

 

반응형