피로도

yongju·2022년 11월 7일
0

Programmers

목록 보기
12/23
post-thumbnail

프로그래머스 레벨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으로 변환해 중복값을 제거

profile
AI dev

0개의 댓글