상세 컨텐츠

본문 제목

[프로그래머스] 피로도

Algorithm

by 쑤야. 2023. 12. 20. 14:30

본문

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

로직


  • DFS를 활용하여 탐험 순서 케이스를 생성한다. 
  • 생성된 모든 탐험 순서 케이스를 점검한다. 
    1. 최소 필요 피로도보다 남아있는 피로도가 같거나 높은 경우, 탐험을 수행한다
    2. 최소 필요 피로도보다 남아있는 피로도가 낮은 경우, 탐험을 중단한다.
    3. max를 통해 탐험한 던전 수의 최댓값을 갱신한다. 

 

코드


def solution(k, dungeons):
    
    orders = []
    visit = [False] * len(dungeons)
    
    def generate(d):
        
        if len(d) == len(dungeons):
            orders.append(d)
            return
        
        for i in range(0, len(dungeons)):
            if visit[i] == False:
                visit[i] = True
                generate(d + [i])
                visit[i] = False
            
    generate([])
    
    answer = 0
    for order in orders:
        remain = k
        complete = 0
        for i,stage in enumerate(order):
            if remain >= dungeons[stage][0]:
                remain -= dungeons[stage][1]
                complete += 1
            else:
                break
        answer = max(answer, complete)
                
    return answer

'Algorithm' 카테고리의 다른 글

[프로그래머스] 타겟 넘버  (0) 2023.12.21
[프로그래머스] 뉴스 클러스터링  (0) 2023.12.21
[프로그래머스] 프로세스  (1) 2023.12.20
[프로그래머스] 할인 행사  (0) 2023.12.18
[프로그래머스] H-Index  (0) 2023.12.18

관련글 더보기