*문제 출처는 프로그래머스에 있습니다.
문제 제목: 피로(2단계)
문제 사이트: 코딩테스트 연습 - 피로도 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다.
이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들을 최대한 많이 탐험하려 합니다. 유저의 현재 피로도 k와 각 던전별 "최소 필요 피로도", "소모 피로도"가 담긴 2차원 배열 dungeons 가 매개변수로 주어질 때, 유저가 탐험할수 있는 최대 던전 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
![](https://blog.kakaocdn.net/dn/cKXNpV/btsCMqtqKwl/szBDiB0C9QA7jGG5k8PfO0/img.png)
입출력 예
![](https://blog.kakaocdn.net/dn/kNKpO/btsCKrfhXJD/ChtpA24ogVLd7ck23CMUG1/img.png)
입출력 예 설명
![](https://blog.kakaocdn.net/dn/nVJQe/btsCAjXa5rm/dD91laujEymJxAIo4GHzGk/img.png)
모범답안
from itertools import permutations
def solution(k, dungeons):
answer = 0
dun_len = len(dungeons)
for permute in permutations(dungeons, dun_len):
hp = k
count = 0
for pm in permute:
if hp >= pm[0]:
hp -= pm[1]
count += 1
if count > answer:
answer = count
return answer
permutations - 순열
permutations는 리스트와 같은 iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우를 계산해준다.
permutations는 클래스이므로 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용한다.
출처 - 파이썬 순열, 조합 (permutations , combinations, product, combination_with_replacement ) (tistory.com)
'코딩테스트 > programmers (python)' 카테고리의 다른 글
programmers / 0 떼기 (0단계) /python (0) | 2024.01.02 |
---|---|
programmers / 부분 문자열 이어 붙여 문자열 만들기(0단계) / python (0) | 2024.01.01 |
programmers / 프로세스(2단계) / python (0) | 2023.12.26 |
Lv.2 다음 큰 숫자, 피보나치 수, 카펫 (0) | 2023.08.22 |
프로그래머스 Lv.2 올바른 괄호, ★숫자의 표현 (0) | 2023.08.17 |