코테 문제 풀기

[프로그래머스] 피로도 _(파이썬 python)

silver님 2024. 7. 29. 15:57

 

 

문제 

 

 

입출력 예 

 

 

파이썬 라이브러리 itertools

itertools 라이브러리를 이용하면 조합과 순열을 쉽게 구할 수 있다. 

itertools : 효율적인 루핑을 위한 이터레이터를 만드는 함수

 

조합형 이터레이터인 

- combinations()

- combinations_with_replacement()

- product()

- permutations()

가 있다.  

 

 

이 중에서도 permutations()에 대해 알아보자 

 

 

 permutations(iterable, r = None)

: iterable에서 원소 개수가 r개인 순열 뽑기

from itertools import permutations 

l = ['A', 'B', 'C']

for i in permutations(l) :
	print(i)

 

출력 결과 : 

('A', 'B', 'C') ('A', 'C', 'B') ('B', 'A', 'C') ('B', 'C', 'A') ('C', 'A', 'B') ('C', 'B', 'A') '''

 

 

코드

여기서 힌트를 얻어 문제를 풀어야한다.

순열로 가능한 모든 순서를 구해서 돌려보고 갈 수 있는 던전수가 가장 큰 것을 리턴한다.  

 

from itertools import permutations

def solution(k, dungeons):
    answer = 0
    
    for p in permutations(dungeons, len(dungeons)):
        tmp = k
        cnt = 0
        
        for need, spend in p:
            if tmp >= need:
                tmp -= spend
                cnt += 1
        answer = max(answer, cnt)
    
    return answer

 

 

728x90
반응형