프로그래머스 레벨2 [정답율 55%]
❓문제
❗문제 정리
사용한 파라미터 :
condition(list_int): 던전에 들어가는 모든 방법
success_list(list_int) : 성공한 횟수 리스트
k__ (int) : 피로도 k
📑코드
import itertools
def solution(k, dungeons):
condition= list(itertools.permutations(dungeons))
success_list=[]
k_=k
for x in condition:
success=0
k_=k
for i in range(len(x)):
if k_>=x[i][0]:
k_=k_-x[i][1]
if k_>=0:
success+=1
success_list.append(success)
return max(success_list)
📝코드 설명
condition= list(itertools.permutations(dungeons))
success_list=[]
k_=k
permutation을 사용하여 가능한 조건을 리스트로 만듦.(condition)
필요한 파라미터 선언
for x in condition:
success=0
k_=k
이중 for문 돌면서 내부 루프 끝나면 success와 k_를 초기값으로 돌려줌
for i in range(len(x)):
if k_>=x[i][0]:
k_=k_-x[i][1]
if k_>=0:
success+=1
success_list.append(success)
조건에 맞게, 최소 피로도보다 체력이 많이 남아있으면, 던전입장 하여 피로도 계산. 남은 피로도가 0보다 크거나 같으면, success+1을하고 최종 success를 list에 넣음
🎖️제출 결과
💡insight
반례: k = 40,
dungeons=[[40, 20], [10, 10], [10, 10], [10, 10], [10, 10]]
permutation으로 랜덤 조건 만들기
permutation을 쓰지 않고 모든 조건을 고려하기는 어려움.
리스트 복사방법 : https://black-hair.tistory.com/49
set이 2차원 배열에서 수행되지 않음 : https://ponyozzang.tistory.com/582 -> tuple을 set으로 변환해 중복값을 제거