코테 노트/프로그래머스

Level 2 피로도 Python 3

화요밍 2022. 3. 9. 22:02
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/87946?language=python3 

 

코딩테스트 연습 - 피로도

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

programmers.co.kr

 

최종 코드

 

GitHub - hwayeon351/Programmers-Algorithms: 프로그래머스 알고리즘 소스 코드 모음

프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.

github.com

from itertools import permutations
def solution(k, dungeons):
    answer = 0
    per = permutations([i for i in range(len(dungeons))])
    
    for p in per:
        print(p)
        tired = k
        cnt = 0
        for i in p:
            if dungeons[i][0] > tired: continue
            tired -= dungeons[i][1]
            cnt += 1
        if answer < cnt: answer = cnt
    
    return answer

풀이 과정

풀이 시간 14분

from itertools import permutations
def solution(k, dungeons):
    answer = 0
    
    #탐험할 던전 순서의 모든 경우의 수 구하기
    per = permutations([i for i in range(len(dungeons))])
    
    for p in per:
    	#현재 피로도
        tired = k
        #탐험한 던전 수
        cnt = 0
        
        #순서대로 던전 탐험하기
        for i in p:
        	#현재 피로도가 최소 필요도보다 적은 경우, 던전을 탐험하지 못한다
            if dungeons[i][0] > tired: continue
            
            #던전을 탐험한다
            tired -= dungeons[i][1]
            cnt += 1
        
        #탐험한 던전 수가 answer보다 많으면, answer을 갱신한다
        if answer < cnt: answer = cnt
    
    return answer
    
#시간복잡도 = O(1), 공간복잡도 = O(1)

 

728x90
반응형