Problem Solving
[프로그래머스] 피로도 - Python3
Dev_en
2023. 1. 25. 17:51
문제 설명
유저의 체력 k와 던전을 탐험하는 데에 요구되는 '최소 필요 피로도'와 던전 탐험에 소요되는 '소모 피로도'들이 2차원 리스트 형태로 주어질 때, 유저가 탐험할 수 있는 최대 던전 수를 구하는 문제
https://school.programmers.co.kr/learn/courses/30/lessons/87946
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 알고리즘 분류 - 완전탐색(Brute Force)
- 난이도 - Level 2
접근 방법
탐험할 던전의 인덱스들의 순열을 구하고, 순열의 각 수열 순서대로 탐색해본다.
예) 던전 3개가 주어질 시 구해지는 순열
(0, 1, 2) => 첫번째 -> 두번째 -> 세번째 던전 순서대로 방문한다고 가정하고 탐색
(0, 2, 1)
(1, 0, 2)
(1, 2, 0)
(2, 0, 1)
(2, 1, 0)
답안 코드
from itertools import permutations
def solution(k, dungeons):
answer = -1
for v in permutations(list(range(len(dungeons))), len(dungeons)):
tmp = k
cnt = 0
for i in v:
if tmp >= dungeons[i][0] :
tmp -= dungeons[i][1]
cnt += 1
if cnt > answer:
answer = cnt
return answer