programmers- lv.2 (피로도)

이예송·2023년 8월 7일

PS

목록 보기
83/97

문제링크: 피로도

✍🏻 Information

content
언어python
난이도⭐️⭐️+0.5
풀이시간15분
제출횟수2
인터넷검색유무yes




🍒 My Code

import itertools

def solution(k, dungeons):
    answer = 0
    seq = list(itertools.permutations([i for i in range(len(dungeons))],len(dungeons)))
    
    for i in seq:
        tmpk,tmpresult = k, 0
        for j in i:
            if dungeons[j][0]>tmpk: #최소 피로도만큼 없음
                continue
            tmpk-=dungeons[j][1]
            tmpresult+=1
        answer=max(answer,tmpresult) 
    return answer




💡 What I learned

  • 완전탐색이라고 쓰여있기도 하고 던젼수도 최대 8개여서 완전탐색으로 풀었다. dungeon를 탐색할 수 있는 모든 순서를 순열을 사용해서 구하고, 차례대로 탐색하며 max값을 구했다.
  • 2차원 list에서 각 list의 첫번째값을 기준으로 정렬: list_name.sort(key=lambda x:x[0])
    -> 원래는 정렬을 사용하려했다.
  • 순열: itertools의 permutation

-> dfs 사용해서 다시 풀어보기

0개의 댓글